メインコンテンツへスキップ
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=ja' \
  --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": "ja",
    "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", "ja");
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", "ja")
    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");
        
        // multipart/form-dataリクエストには Apache HttpClient または OkHttp ライブラリを使用してください
    }
}
<?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" => "ja",
    "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', 'ja'],
    ['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": "ja", "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("ja"), "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, "ja",
                 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": @"ja", @"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 "ファイルアップロードには multipart_form ライブラリを使用してください"
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'] = 'ja';
  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 = "ja",
    response_format = "json"
  ),
  encode = "multipart"
)

cat(content(response, "text"))
{
  "text": "これはテスト音声の文字起こしテキストです。"
}
{
  "task": "transcribe",
  "language": "ja",
  "duration": 8.5,
  "text": "これはテスト音声の文字起こしテキストです。",
  "segments": [
    {
      "id": 0,
      "seek": 0,
      "start": 0.0,
      "end": 3.5,
      "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
これはテスト音声

2
00:00:03,500 --> 00:00:08,500
の文字起こしテキストです。
{
  "error": {
    "code": 400,
    "message": "リクエストパラメータが無効です",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "認証に失敗しました。APIキーを確認してください",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "アカウント残高が不足しています。チャージしてください",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 413,
    "message": "ファイルサイズが制限を超えています(最大25MB)",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "リクエストが多すぎます。しばらくしてから再試行してください",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "サーバー内部エラー。しばらくしてから再試行してください",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "ゲートウェイエラー。サーバーが一時的に利用できません",
    "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=ja' \
  --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": "ja",
    "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", "ja");
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", "ja")
    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");
        
        // multipart/form-dataリクエストには Apache HttpClient または OkHttp ライブラリを使用してください
    }
}
<?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" => "ja",
    "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', 'ja'],
    ['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": "ja", "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("ja"), "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, "ja",
                 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": @"ja", @"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 "ファイルアップロードには multipart_form ライブラリを使用してください"
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'] = 'ja';
  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 = "ja",
    response_format = "json"
  ),
  encode = "multipart"
)

cat(content(response, "text"))
{
  "text": "これはテスト音声の文字起こしテキストです。"
}
{
  "task": "transcribe",
  "language": "ja",
  "duration": 8.5,
  "text": "これはテスト音声の文字起こしテキストです。",
  "segments": [
    {
      "id": 0,
      "seek": 0,
      "start": 0.0,
      "end": 3.5,
      "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
これはテスト音声

2
00:00:03,500 --> 00:00:08,500
の文字起こしテキストです。
{
  "error": {
    "code": 400,
    "message": "リクエストパラメータが無効です",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "認証に失敗しました。APIキーを確認してください",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "アカウント残高が不足しています。チャージしてください",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 413,
    "message": "ファイルサイズが制限を超えています(最大25MB)",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "リクエストが多すぎます。しばらくしてから再試行してください",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "サーバー内部エラー。しばらくしてから再試行してください",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "ゲートウェイエラー。サーバーが一時的に利用できません",
    "type": "bad_gateway"
  }
}

Authorizations

Authorization
string
必須
すべてのインターフェースでBearer Token認証が必要ですAPI Keyの取得:API Key管理ページにアクセスしてAPI Keyを取得してくださいリクエストヘッダーに追加:
Authorization: Bearer YOUR_API_KEY

リクエストボディ

⚠️ このエンドポイントはオンラインテスト(Try it)に対応していませんファイルアップロードの制限により、以下の方法でテストしてください:
  • Apifox / Postman - インポート後、手動で file パラメータをファイルタイプに変更
  • cURL - 右側のコード例を参照
  • SDK - 各言語のSDKサンプルコードを使用
file
string
必須
文字起こしする音声ファイル(ファイルタイプ)⚠️ 注意:Apifoxなどのツールでテストする場合:
  1. インポート後、このパラメータタイプを手動で file に変更してください
  2. リクエストのContent-Typeが multipart/form-data であることを確認してください
対応形式:mp3, mp4, mpeg, mpga, m4a, wav, webm最大ファイルサイズ:25 MB
model
string
デフォルト:"whisper-1"
必須
音声認識モデル名例:"whisper-1"
language
string
音声の言語コード(ISO-639-1形式)言語を指定すると精度と速度が向上します対応言語:zh(中国語)、en(英語)、ja(日本語)、ko(韓国語)など99言語例:"ja"
prompt
string
文字起こしスタイルをガイドするためのオプションテキストプロンプト最大224トークン
response_format
string
デフォルト:"json"
出力形式対応形式:
  • json - JSON形式(テキストのみ)
  • text - プレーンテキスト
  • srt - SRT字幕形式
  • verbose_json - 詳細JSON形式(タイムスタンプとメタデータを含む)
  • vtt - WebVTT字幕形式
temperature
number
デフォルト:"0"
サンプリング温度、範囲0〜1高い値(0.8など)は出力をよりランダムにし、低い値(0.2など)はより確定的で一貫性のあるものにします

Response

text
string
文字起こしされたテキスト内容
task
string
タスクタイプ、transcribeで固定verbose_json形式でのみ返されます
language
string
検出または指定された言語コードverbose_json形式でのみ返されます
duration
number
音声の長さ(秒)verbose_json形式でのみ返されます
segments
array
テキストセグメントの配列verbose_json形式でのみ返されます