API Documentation
Integrate Speakyboo transcription and AI processing into your own applications.
Manage API KeysAuthentication
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.
| Endpoint | Limit |
|---|---|
| /api/v1/transcribe | 100 requests / hour |
| /api/v1/ai | 200 requests / hour |
Rate Limit Headers
X-RateLimit-RemainingNumber of requests remaining in the current windowRetry-AfterSeconds to wait before retrying (only on 429 responses)Endpoints
POST
/api/v1/transcribeTranscribe 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/aiProcess 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
| Code | Status | Description |
|---|---|---|
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Usage limit reached or plan does not include API access |
| 413 | Payload Too Large | Audio file exceeds the 25MB size limit |
| 429 | Too Many Requests | Rate limit exceeded. Check Retry-After header. |
| 500 | Server Error | An 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.