Passer au contenu principal
POST
/
v1
/
audio
/
transcriptions
curl --request POST \
  --url https://api.apimart.ai/v1/audio/transcriptions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'file=@/path/to/audio.mp3' \
  --form 'model=whisper-1' \
  --form 'language=en' \
  --form 'response_format=json'
import requests

url = "https://api.apimart.ai/v1/audio/transcriptions"

files = {
    "file": open("/path/to/audio.mp3", "rb")
}

data = {
    "model": "whisper-1",
    "language": "en",
    "response_format": "json"
}

headers = {
    "Authorization": "Bearer <token>"
}

response = requests.post(url, files=files, data=data, headers=headers)

print(response.json())
const url = "https://api.apimart.ai/v1/audio/transcriptions";

const formData = new FormData();
formData.append("file", audioFile);
formData.append("model", "whisper-1");
formData.append("language", "en");
formData.append("response_format", "json");

const headers = {
  "Authorization": "Bearer <token>"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: formData
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
package main

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    url := "https://api.apimart.ai/v1/audio/transcriptions"

    file, _ := os.Open("/path/to/audio.mp3")
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    
    part, _ := writer.CreateFormFile("file", "audio.mp3")
    io.Copy(part, file)
    
    writer.WriteField("model", "whisper-1")
    writer.WriteField("language", "en")
    writer.WriteField("response_format", "json")
    writer.Close()

    req, _ := http.NewRequest("POST", url, body)
    req.Header.Set("Authorization", "Bearer <token>")
    req.Header.Set("Content-Type", writer.FormDataContentType())

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    responseBody, _ := io.ReadAll(resp.Body)
    fmt.Println(string(responseBody))
}
import java.io.File;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://api.apimart.ai/v1/audio/transcriptions";
        
        File audioFile = new File("/path/to/audio.mp3");
        
        // Use Apache HttpClient or OkHttp library for multipart/form-data requests
    }
}
<?php

$url = "https://api.apimart.ai/v1/audio/transcriptions";

$file = new CURLFile('/path/to/audio.mp3', 'audio/mpeg', 'audio.mp3');

$data = [
    "file" => $file,
    "model" => "whisper-1",
    "language" => "en",
    "response_format" => "json"
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer <token>"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
require 'net/http'
require 'uri'

url = URI("https://api.apimart.ai/v1/audio/transcriptions")

File.open('/path/to/audio.mp3', 'rb') do |file|
  request = Net::HTTP::Post.new(url)
  request["Authorization"] = "Bearer <token>"
  
  form_data = [
    ['file', file, { filename: 'audio.mp3', content_type: 'audio/mpeg' }],
    ['model', 'whisper-1'],
    ['language', 'en'],
    ['response_format', 'json']
  ]
  
  request.set_form form_data, 'multipart/form-data'
  
  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  
  response = http.request(request)
  puts response.body
end
import Foundation

let url = URL(string: "https://api.apimart.ai/v1/audio/transcriptions")!

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")

let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

var body = Data()

// Add file
let fileURL = URL(fileURLWithPath: "/path/to/audio.mp3")
if let fileData = try? Data(contentsOf: fileURL) {
    body.append("--\(boundary)\r\n".data(using: .utf8)!)
    body.append("Content-Disposition: form-data; name=\"file\"; filename=\"audio.mp3\"\r\n".data(using: .utf8)!)
    body.append("Content-Type: audio/mpeg\r\n\r\n".data(using: .utf8)!)
    body.append(fileData)
    body.append("\r\n".data(using: .utf8)!)
}

// Add other fields
let fields = ["model": "whisper-1", "language": "en", "response_format": "json"]
for (key, value) in fields {
    body.append("--\(boundary)\r\n".data(using: .utf8)!)
    body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!)
    body.append("\(value)\r\n".data(using: .utf8)!)
}

body.append("--\(boundary)--\r\n".data(using: .utf8)!)

request.httpBody = body

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }
    
    if let data = data, let responseString = String(data: data, encoding: .utf8) {
        print(responseString)
    }
}

task.resume()
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://api.apimart.ai/v1/audio/transcriptions";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");

        using var form = new MultipartFormDataContent();
        
        var fileStream = File.OpenRead("/path/to/audio.mp3");
        form.Add(new StreamContent(fileStream), "file", "audio.mp3");
        form.Add(new StringContent("whisper-1"), "model");
        form.Add(new StringContent("en"), "language");
        form.Add(new StringContent("json"), "response_format");

        var response = await client.PostAsync(url, form);
        var result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
#include <stdio.h>
#include <curl/curl.h>

int main(void) {
    CURL *curl;
    CURLcode res;
    struct curl_httppost *formpost = NULL;
    struct curl_httppost *lastptr = NULL;
    struct curl_slist *headers = NULL;

    curl_global_init(CURL_GLOBAL_ALL);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "file",
                 CURLFORM_FILE, "/path/to/audio.mp3",
                 CURLFORM_END);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "model",
                 CURLFORM_COPYCONTENTS, "whisper-1",
                 CURLFORM_END);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "language",
                 CURLFORM_COPYCONTENTS, "en",
                 CURLFORM_END);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "response_format",
                 CURLFORM_COPYCONTENTS, "json",
                 CURLFORM_END);

    curl = curl_easy_init();
    headers = curl_slist_append(headers, "Authorization: Bearer <token>");

    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://api.apimart.ai/v1/audio/transcriptions");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);

        res = curl_easy_perform(curl);

        if(res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        }

        curl_easy_cleanup(curl);
        curl_formfree(formpost);
        curl_slist_free_all(headers);
    }

    curl_global_cleanup();
    return 0;
}
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSURL *url = [NSURL URLWithString:@"https://api.apimart.ai/v1/audio/transcriptions"];
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
        
        NSString *boundary = @"Boundary-12345";
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
        [request setValue:contentType forHTTPHeaderField:@"Content-Type"];
        
        NSMutableData *body = [NSMutableData data];
        
        // Add file
        NSData *fileData = [NSData dataWithContentsOfFile:@"/path/to/audio.mp3"];
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"audio.mp3\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"Content-Type: audio/mpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:fileData];
        [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        
        // Add other fields
        NSDictionary *fields = @{@"model": @"whisper-1", @"language": @"en", @"response_format": @"json"};
        for (NSString *key in fields) {
            [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
            [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]];
            [body appendData:[[NSString stringWithFormat:@"%@\r\n", fields[key]] dataUsingEncoding:NSUTF8StringEncoding]];
        }
        
        [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [request setHTTPBody:body];
        
        NSURLSessionDataTask *task = [[NSURLSession sharedSession] 
            dataTaskWithRequest:request
            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                if (error) {
                    NSLog(@"Error: %@", error);
                    return;
                }
                NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                NSLog(@"%@", result);
            }];
        
        [task resume];
        [[NSRunLoop mainRunLoop] run];
    }
    return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix

let url = "https://api.apimart.ai/v1/audio/transcriptions"

(* Note: Multipart form data handling in OCaml requires additional libraries *)
let () =
  print_endline "Use multipart_form library to handle file uploads"
import 'dart:io';
import 'package:http/http.dart' as http;

void main() async {
  final url = Uri.parse('https://api.apimart.ai/v1/audio/transcriptions');
  
  var request = http.MultipartRequest('POST', url);
  request.headers['Authorization'] = 'Bearer <token>';
  
  request.files.add(await http.MultipartFile.fromPath('file', '/path/to/audio.mp3'));
  request.fields['model'] = 'whisper-1';
  request.fields['language'] = 'en';
  request.fields['response_format'] = 'json';
  
  var response = await request.send();
  var responseData = await response.stream.bytesToString();
  
  print(responseData);
}
library(httr)

url <- "https://api.apimart.ai/v1/audio/transcriptions"

response <- POST(
  url,
  add_headers(Authorization = "Bearer <token>"),
  body = list(
    file = upload_file("/path/to/audio.mp3"),
    model = "whisper-1",
    language = "en",
    response_format = "json"
  ),
  encode = "multipart"
)

cat(content(response, "text"))
{
  "text": "This is a transcribed text from the test audio."
}
{
  "task": "transcribe",
  "language": "en",
  "duration": 8.5,
  "text": "This is a transcribed text from the test audio.",
  "segments": [
    {
      "id": 0,
      "seek": 0,
      "start": 0.0,
      "end": 3.5,
      "text": "This is a transcribed text",
      "tokens": [50364, 1234, 5678],
      "temperature": 0.0,
      "avg_logprob": -0.3,
      "compression_ratio": 1.2,
      "no_speech_prob": 0.01
    }
  ]
}
1
00:00:00,000 --> 00:00:03,500
This is a transcribed text

2
00:00:03,500 --> 00:00:08,500
from the test audio.
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "Authentication failed, please check your API key",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient account balance, please recharge",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 413,
    "message": "File size exceeds limit (maximum 25MB)",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "Bad gateway, server temporarily unavailable",
    "type": "bad_gateway"
  }
}
curl --request POST \
  --url https://api.apimart.ai/v1/audio/transcriptions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'file=@/path/to/audio.mp3' \
  --form 'model=whisper-1' \
  --form 'language=en' \
  --form 'response_format=json'
import requests

url = "https://api.apimart.ai/v1/audio/transcriptions"

files = {
    "file": open("/path/to/audio.mp3", "rb")
}

data = {
    "model": "whisper-1",
    "language": "en",
    "response_format": "json"
}

headers = {
    "Authorization": "Bearer <token>"
}

response = requests.post(url, files=files, data=data, headers=headers)

print(response.json())
const url = "https://api.apimart.ai/v1/audio/transcriptions";

const formData = new FormData();
formData.append("file", audioFile);
formData.append("model", "whisper-1");
formData.append("language", "en");
formData.append("response_format", "json");

const headers = {
  "Authorization": "Bearer <token>"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: formData
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
package main

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    url := "https://api.apimart.ai/v1/audio/transcriptions"

    file, _ := os.Open("/path/to/audio.mp3")
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    
    part, _ := writer.CreateFormFile("file", "audio.mp3")
    io.Copy(part, file)
    
    writer.WriteField("model", "whisper-1")
    writer.WriteField("language", "en")
    writer.WriteField("response_format", "json")
    writer.Close()

    req, _ := http.NewRequest("POST", url, body)
    req.Header.Set("Authorization", "Bearer <token>")
    req.Header.Set("Content-Type", writer.FormDataContentType())

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    responseBody, _ := io.ReadAll(resp.Body)
    fmt.Println(string(responseBody))
}
import java.io.File;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://api.apimart.ai/v1/audio/transcriptions";
        
        File audioFile = new File("/path/to/audio.mp3");
        
        // Use Apache HttpClient or OkHttp library for multipart/form-data requests
    }
}
<?php

$url = "https://api.apimart.ai/v1/audio/transcriptions";

$file = new CURLFile('/path/to/audio.mp3', 'audio/mpeg', 'audio.mp3');

$data = [
    "file" => $file,
    "model" => "whisper-1",
    "language" => "en",
    "response_format" => "json"
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer <token>"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
require 'net/http'
require 'uri'

url = URI("https://api.apimart.ai/v1/audio/transcriptions")

File.open('/path/to/audio.mp3', 'rb') do |file|
  request = Net::HTTP::Post.new(url)
  request["Authorization"] = "Bearer <token>"
  
  form_data = [
    ['file', file, { filename: 'audio.mp3', content_type: 'audio/mpeg' }],
    ['model', 'whisper-1'],
    ['language', 'en'],
    ['response_format', 'json']
  ]
  
  request.set_form form_data, 'multipart/form-data'
  
  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  
  response = http.request(request)
  puts response.body
end
import Foundation

let url = URL(string: "https://api.apimart.ai/v1/audio/transcriptions")!

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")

let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

var body = Data()

// Add file
let fileURL = URL(fileURLWithPath: "/path/to/audio.mp3")
if let fileData = try? Data(contentsOf: fileURL) {
    body.append("--\(boundary)\r\n".data(using: .utf8)!)
    body.append("Content-Disposition: form-data; name=\"file\"; filename=\"audio.mp3\"\r\n".data(using: .utf8)!)
    body.append("Content-Type: audio/mpeg\r\n\r\n".data(using: .utf8)!)
    body.append(fileData)
    body.append("\r\n".data(using: .utf8)!)
}

// Add other fields
let fields = ["model": "whisper-1", "language": "en", "response_format": "json"]
for (key, value) in fields {
    body.append("--\(boundary)\r\n".data(using: .utf8)!)
    body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!)
    body.append("\(value)\r\n".data(using: .utf8)!)
}

body.append("--\(boundary)--\r\n".data(using: .utf8)!)

request.httpBody = body

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }
    
    if let data = data, let responseString = String(data: data, encoding: .utf8) {
        print(responseString)
    }
}

task.resume()
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://api.apimart.ai/v1/audio/transcriptions";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");

        using var form = new MultipartFormDataContent();
        
        var fileStream = File.OpenRead("/path/to/audio.mp3");
        form.Add(new StreamContent(fileStream), "file", "audio.mp3");
        form.Add(new StringContent("whisper-1"), "model");
        form.Add(new StringContent("en"), "language");
        form.Add(new StringContent("json"), "response_format");

        var response = await client.PostAsync(url, form);
        var result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
#include <stdio.h>
#include <curl/curl.h>

int main(void) {
    CURL *curl;
    CURLcode res;
    struct curl_httppost *formpost = NULL;
    struct curl_httppost *lastptr = NULL;
    struct curl_slist *headers = NULL;

    curl_global_init(CURL_GLOBAL_ALL);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "file",
                 CURLFORM_FILE, "/path/to/audio.mp3",
                 CURLFORM_END);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "model",
                 CURLFORM_COPYCONTENTS, "whisper-1",
                 CURLFORM_END);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "language",
                 CURLFORM_COPYCONTENTS, "en",
                 CURLFORM_END);

    curl_formadd(&formpost, &lastptr,
                 CURLFORM_COPYNAME, "response_format",
                 CURLFORM_COPYCONTENTS, "json",
                 CURLFORM_END);

    curl = curl_easy_init();
    headers = curl_slist_append(headers, "Authorization: Bearer <token>");

    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://api.apimart.ai/v1/audio/transcriptions");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);

        res = curl_easy_perform(curl);

        if(res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        }

        curl_easy_cleanup(curl);
        curl_formfree(formpost);
        curl_slist_free_all(headers);
    }

    curl_global_cleanup();
    return 0;
}
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSURL *url = [NSURL URLWithString:@"https://api.apimart.ai/v1/audio/transcriptions"];
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
        
        NSString *boundary = @"Boundary-12345";
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
        [request setValue:contentType forHTTPHeaderField:@"Content-Type"];
        
        NSMutableData *body = [NSMutableData data];
        
        // Add file
        NSData *fileData = [NSData dataWithContentsOfFile:@"/path/to/audio.mp3"];
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"audio.mp3\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"Content-Type: audio/mpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:fileData];
        [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        
        // Add other fields
        NSDictionary *fields = @{@"model": @"whisper-1", @"language": @"en", @"response_format": @"json"};
        for (NSString *key in fields) {
            [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
            [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]];
            [body appendData:[[NSString stringWithFormat:@"%@\r\n", fields[key]] dataUsingEncoding:NSUTF8StringEncoding]];
        }
        
        [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [request setHTTPBody:body];
        
        NSURLSessionDataTask *task = [[NSURLSession sharedSession] 
            dataTaskWithRequest:request
            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                if (error) {
                    NSLog(@"Error: %@", error);
                    return;
                }
                NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                NSLog(@"%@", result);
            }];
        
        [task resume];
        [[NSRunLoop mainRunLoop] run];
    }
    return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix

let url = "https://api.apimart.ai/v1/audio/transcriptions"

(* Note: Multipart form data handling in OCaml requires additional libraries *)
let () =
  print_endline "Use multipart_form library to handle file uploads"
import 'dart:io';
import 'package:http/http.dart' as http;

void main() async {
  final url = Uri.parse('https://api.apimart.ai/v1/audio/transcriptions');
  
  var request = http.MultipartRequest('POST', url);
  request.headers['Authorization'] = 'Bearer <token>';
  
  request.files.add(await http.MultipartFile.fromPath('file', '/path/to/audio.mp3'));
  request.fields['model'] = 'whisper-1';
  request.fields['language'] = 'en';
  request.fields['response_format'] = 'json';
  
  var response = await request.send();
  var responseData = await response.stream.bytesToString();
  
  print(responseData);
}
library(httr)

url <- "https://api.apimart.ai/v1/audio/transcriptions"

response <- POST(
  url,
  add_headers(Authorization = "Bearer <token>"),
  body = list(
    file = upload_file("/path/to/audio.mp3"),
    model = "whisper-1",
    language = "en",
    response_format = "json"
  ),
  encode = "multipart"
)

cat(content(response, "text"))
{
  "text": "This is a transcribed text from the test audio."
}
{
  "task": "transcribe",
  "language": "en",
  "duration": 8.5,
  "text": "This is a transcribed text from the test audio.",
  "segments": [
    {
      "id": 0,
      "seek": 0,
      "start": 0.0,
      "end": 3.5,
      "text": "This is a transcribed text",
      "tokens": [50364, 1234, 5678],
      "temperature": 0.0,
      "avg_logprob": -0.3,
      "compression_ratio": 1.2,
      "no_speech_prob": 0.01
    }
  ]
}
1
00:00:00,000 --> 00:00:03,500
This is a transcribed text

2
00:00:03,500 --> 00:00:08,500
from the test audio.
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "Authentication failed, please check your API key",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient account balance, please recharge",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 413,
    "message": "File size exceeds limit (maximum 25MB)",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "Bad gateway, server temporarily unavailable",
    "type": "bad_gateway"
  }
}

Autorisations

Authorization
string
requis
Toutes les interfaces requièrent une authentification par Bearer TokenObtenir une clé API :Rendez-vous sur la page de gestion des clés API pour obtenir votre clé APIAjoutez-la à l’en-tête de la requête :
Authorization: Bearer YOUR_API_KEY

Corps de la requête

⚠️ Les tests en ligne (Try it) ne sont pas pris en charge pour cet endpointEn raison des limitations de téléversement de fichiers, veuillez utiliser pour vos tests :
  • Apifox / Postman — après l’import, modifiez manuellement le paramètre file en type fichier
  • cURL — référez-vous aux exemples de code à droite
  • SDK — utilisez les exemples de SDK dans les différents langages
file
string
requis
Fichier audio à transcrire (type File)⚠️ Remarque : lorsque vous testez avec Apifox ou des outils similaires :
  1. Après l’import, modifiez manuellement le type de ce paramètre en file
  2. Vérifiez que le Content-Type de la requête est bien multipart/form-data
Formats pris en charge : mp3, mp4, mpeg, mpga, m4a, wav, webmTaille maximale du fichier : 25 Mo
model
string
défaut:"whisper-1"
requis
Nom du modèle de reconnaissance vocaleExemple : "whisper-1"
language
string
Code de la langue de l’audio (format ISO-639-1)Spécifier la langue peut améliorer la précision et la vitesseLes langues prises en charge incluent : zh (chinois), en (anglais), ja (japonais), ko (coréen) et 99 autres languesExemple : "en"
prompt
string
Invite textuelle facultative pour guider le style de transcription ou poursuivre un audio précédentMaximum 224 tokens
response_format
string
défaut:"json"
Format de sortieFormats pris en charge :
  • json — format JSON (texte uniquement)
  • text — texte brut
  • srt — format de sous-titres SRT
  • verbose_json — format JSON détaillé (inclut les horodatages et les métadonnées)
  • vtt — format de sous-titres WebVTT
temperature
number
défaut:"0"
Température d’échantillonnage, plage de 0 à 1Les valeurs plus élevées (comme 0,8) rendent la sortie plus aléatoire, les valeurs plus basses (comme 0,2) la rendent plus déterministe et cohérente

Réponse

text
string
Contenu textuel transcrit
task
string
Type de tâche, toujours défini sur transcribeRenvoyé uniquement au format verbose_json
language
string
Code de langue détecté ou spécifiéRenvoyé uniquement au format verbose_json
duration
number
Durée de l’audio (en secondes)Renvoyée uniquement au format verbose_json
segments
array
Tableau de segments de texteRenvoyé uniquement au format verbose_json