Good Tape API (1.0.2)

Download OpenAPI specification:Download

This is a documentation for the Good Tape API.

You can request an API key and quota by contacting us at yourfriends@goodtape.io.

The API transcription flow

The API transcription flow is as follows:

  1. Post a transcription to the /transcribe endpoint.
  2. Within approx. an hour the API transcribes your audio file(also depends on audio file length).
  3. The API sends the transcription results to your callbackUrl.
  4. The API deletes the audio file from storage.
  5. The API deletes the transcription results.

This effectively means that the API doesn't store any of your transcription data, thus it's up to you to store the transcription results. If the callback URL is unreachable, the transcription results will be lost.

The API can transcribe both audio and video files. If you upload a video file, the API will extract the audio from it and transcribe it. The API has an upload limit of 2GB per request.

We encourage you to test the API callback flow before using it in production. You can do so by using the /transcribe/test endpoint. This will allow you to simulate the api transcription flow without actually transcribing anything.


Pricing

You can buy monthly quotas of API transcription hours. The price per hour depends on the amount of hours you buy:

Amount Price pr. hour Price
< 100 hours € 1 € 100
< 250 hours € 0.9 € 225
< 500 hours € 0.8 € 400
< 1000 hours € 0.7 € 700
< 2500 hours € 0.6 € 1500
< 5000 hours € 0.5 € 2500
> 5000 hours Contact us Contact us

If your montly quota is exceeded, you'll be billed 1€/hour overage. Rollover of quotas between months is not possible.

For futher questions an quota requests, please reach out to us at yourfriends@goodtape.io, write "API" in the subject line.


Transcribe

This endpoint allows you to transcribe audio. Once the transcription is complete you'll get the results via the callback URL. The audio you upload is persisted in storage for the time it takes for the transcription to complete. After that, it's deleted. The transcription results are not stored and are only sent to the callback URL.

Authorizations:
ApiKeyAuthorization
Request Body schema: multipart/form-data
required
audio
string <binary>

The audio(or video) file. 2GB upload limit.

callbackUrl
string

The callback URL. This is where the transcription results will be sent with a POST request.

languageCode
string or null

The language code. If you don't provide one, we'll try to detect it automatically.

transcriptionId
string or null

The transcription ID. If you don't provide one, we'll generate one for you. You can use the transcription ID to identify the transcription when the results are sent back to the callback URL.

Responses

Callbacks

Request samples

import requests

url = "https://goodtape.io/api/transcribe"
headers = {"Authorization": "your-api-key"}

files = {"audio": ("audio.wav", open("audio.wav", "rb"))}
data = {
  "callbackUrl": "http://example.com/callback",
  "languageCode": "en",
  "transcriptionId": "exampleTranscriptionId"
}

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

Response samples

Content type
application/json
{}

Callback payload samples

Callback
POST: Transcription Callback
Content type
application/json
{
  • "event_type": "transcription_finished",
  • "transcription_id": "018AAD4B8CF92FE181EE504F8DF57B0A",
  • "content": {
    }
}

Test transcribe

This endpoint allows you to test the transcription process. It simulates the transcription and sends the result to the specified callback URL. The test endpoint will only respond with a 202 status code, if it can reach the callback URL.

Request Body schema: multipart/form-data
required
audio
string <binary>

The audio file.

callbackUrl
string

The callback URL.

languageCode
string or null

The language code. If you don't provide one, we'll try to detect it automatically.

transcriptionId
string or null

The transcription ID.

Responses

Callbacks

Response samples

Content type
application/json
{}

Callback payload samples

Callback
POST: Transcription Callback
Content type
application/json
{
  • "event_type": "transcription_finished",
  • "transcription_id": "018AAD4B8CF92FE181EE504F8DF57B0A",
  • "content": {
    }
}