API Documentation

Integrate Speakyboo transcription and AI processing into your own applications.

Manage API Keys

Authentication

All API requests require a valid API key passed in the Authorization header as a Bearer token.

Generate and manage your API keys from the API dashboard. Keys are prefixed with sboo_ and are only shown once at creation.

curl https://speakyboo.com/api/v1/transcribe \
  -H "Authorization: Bearer sboo_your_api_key"

Rate Limits

Rate limits are applied per API key. When a limit is exceeded, the API returns a 429 status code.

EndpointLimit
/api/v1/transcribe100 requests / hour
/api/v1/ai200 requests / hour

Rate Limit Headers

X-RateLimit-RemainingNumber of requests remaining in the current window
Retry-AfterSeconds to wait before retrying (only on 429 responses)

Endpoints

POST/api/v1/transcribe

Transcribe an audio file to text. Supports webm, mp3, wav, m4a, and ogg formats up to 25MB.

Headers

Authorization:Bearer sboo_your_api_key
Content-Type:multipart/form-data

Request Body

Form field: "audio"
Max size: 25MB
Formats: webm, mp3, wav, m4a, ogg

Response

{
  "success": true,
  "data": {
    "text": "Your transcribed text appears here.",
    "remaining": 499
  }
}

Error Response

{
  "success": false,
  "error": "Audio file is required"
}

curl Example

curl -X POST https://speakyboo.com/api/v1/transcribe \
  -H "Authorization: Bearer sboo_your_api_key" \
  -F "audio=@recording.webm"

JavaScript Example

const formData = new FormData();
formData.append("audio", audioFile);

const response = await fetch("https://speakyboo.com/api/v1/transcribe", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sboo_your_api_key",
  },
  body: formData,
});

const result = await response.json();
console.log(result.data.text);
POST/api/v1/ai

Process text with AI. Send a prompt and content to receive transformed or enhanced text.

Headers

Authorization:Bearer sboo_your_api_key
Content-Type:application/json

Request Body

{
  "prompt": "Polish this text for a professional email",
  "content": "hey can we meet tomorrow to talk about the project"
}

Response

{
  "success": true,
  "data": {
    "text": "Hi, would you be available to meet tomorrow to discuss the project?",
    "remaining": 499
  }
}

Error Response

{
  "success": false,
  "error": "Prompt and content are required"
}

curl Example

curl -X POST https://speakyboo.com/api/v1/ai \
  -H "Authorization: Bearer sboo_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Polish this text for a professional email",
    "content": "hey can we meet tomorrow to talk about the project"
  }'

JavaScript Example

const response = await fetch("https://speakyboo.com/api/v1/ai", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sboo_your_api_key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    prompt: "Polish this text for a professional email",
    content: "hey can we meet tomorrow to talk about the project",
  }),
});

const result = await response.json();
console.log(result.data.text);

Error Codes

CodeStatusDescription
401UnauthorizedMissing or invalid API key
403ForbiddenUsage limit reached or plan does not include API access
413Payload Too LargeAudio file exceeds the 25MB size limit
429Too Many RequestsRate limit exceeded. Check Retry-After header.
500Server ErrorAn unexpected error occurred. Try again later.

All API responses follow the same envelope format. On success, success is true with a data object. On failure, success is false with an error string.