safi 0.1.0

Safi API Client for consuming chat, transcription, and translation APIs.
Documentation
use reqwest::Client;
use serde::{Deserialize, Serialize};
use std::error::Error;

#[derive(Serialize)]
struct TranscriptionRequest {
    audio_url: String,
}

#[derive(Deserialize)]
struct TranscriptionResponse {
    transcription: String,
}

pub async fn transcribe(audio_url: &str, api_key: &str) -> Result<String, Box<dyn Error>> {
    let client = Client::new();
    let request = TranscriptionRequest {
        audio_url: audio_url.to_string(),
    };

    let response = client
        .post("https://safi.insolify.com/transcription")
        .json(&request)
        .bearer_auth(api_key)
        .send()
        .await?;

    let transcription_response: TranscriptionResponse = response.json().await?;
    Ok(transcription_response.transcription)
}