Propulsé parChatGPTClaudeGoogle Gemini
Compatible avecGoogle DriveDropboxOneDrive

Endpoints

Uploads

Upload audio or video files with a signed PUT URL, then confirm the upload for transcription.

If your media is not reachable at a public URL, upload it first. The flow has three steps: request a signed URL, PUT the file to that URL, then confirm the upload. The resulting upload_id is passed to POST /v2/transcripts.

  1. POST /v2/uploads/sign with the filename and content type. You get back an upload_id and a signed url.
  2. PUT the raw file bytes to url with the exact Content-Type header echoed in the response. No API key is needed on this request; the URL itself is the credential and expires after 1 hour.
  3. POST /v2/uploads/{upload_id}/complete to verify the file reached storage.
Uploads accept audio and video files up to 5 GiB, including mp3, wav, m4a, flac, ogg, opus, aac, wma, mp4, mov, mkv, webm, and many more. Files reported by the browser as application/octet-stream are accepted when the file extension is a recognized media type.

Create a signed upload

POST/v2/uploads/signRegister an upload and receive a signed PUT URL

Request body

FieldTypeRequiredDescription
filenamestringYesOriginal filename, extension included. Used to validate the media type and as the default transcript title.
content_typestringYesMIME type of the file, for example audio/mpeg or video/mp4. Must be an audio or video type, or resolvable from the filename extension.
size_bytesintegerNoFile size in bytes. When provided it must be positive (400 invalid_size) and at most 5 GiB (413 upload_too_large).

Response

FieldTypeDescription
upload_idstringIdentifier to confirm the upload and to reference it in POST /v2/transcripts.
urlstringSigned storage URL. Send the file here with an HTTP PUT.
methodstringAlways PUT.
headersobjectHeaders that must be sent with the PUT, currently the exact Content-Type.
expires_inintegerSigned URL lifetime in seconds, currently 3600.

Errors

StatusCodeWhen
400unsupported_media_typeThe content type and filename do not describe an audio or video file.
400invalid_sizesize_bytes is zero or negative.
413upload_too_largesize_bytes exceeds 5 GiB.
bash
curl -X POST https://api.realtimevoicekit.com/v2/uploads/sign \
  -H "Authorization: Bearer rtvk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"filename": "meeting.mp3", "content_type": "audio/mpeg", "size_bytes": 4194304}'
Example response
{
  "upload_id": "upl_9f2c1e7ab4",
  "url": "https://storage.googleapis.com/…signed…",
  "method": "PUT",
  "headers": { "Content-Type": "audio/mpeg" },
  "expires_in": 3600
}

Upload the file

Send the raw bytes to the signed url with PUT. The Content-Type header must match the one returned in headers exactly, or storage rejects the request. Do not send your API key to the storage host.

PUT the file to the signed URL
curl -X PUT "https://storage.googleapis.com/…signed…" \
  -H "Content-Type: audio/mpeg" \
  --data-binary @meeting.mp3

Complete the upload

POST/v2/uploads/{upload_id}/completeVerify the file reached storage and mark the upload ready

Path parameters

ParameterTypeDescription
upload_idstringThe id returned by POST /v2/uploads/sign.

Response

FieldTypeDescription
idstringThe upload id.
statusstringuploaded once confirmed. Calling complete again on a confirmed upload is a no-op and returns the same object.
filenamestring or nullThe registered filename.
content_typestring or nullThe registered content type.
size_bytesinteger or nullThe registered size, when provided at sign time.

Errors

StatusCodeWhen
404not_foundThe upload id does not exist or belongs to another account.
400upload_incompleteThe file is not in storage yet. Retry the PUT, then call complete again.
Complete the upload
curl -X POST https://api.realtimevoicekit.com/v2/uploads/upl_9f2c1e7ab4/complete \
  -H "Authorization: Bearer rtvk_your_api_key"

Now create the transcript with {"upload_id": "upl_9f2c1e7ab4"} on POST /v2/transcripts.

4.2sur 21 avis