API Documentation
Integrate TranscribeAI into your applications
Quick Start
Register Account
Create a free account at scribit.ai to get started with your API credentials.
Get API Token
Authenticate via POST /auth/login to receive your JWT token.
Start Transcribing
Upload audio files and receive accurate transcriptions via our API.
Base URL
https://api.scribit.aiAuthentication
All API requests require authentication using an API key
Authorization: Bearer your_jwt_token_hereEndpoints
Authentication
/auth/loginAuthenticate and receive JWT token
Request Body
{
"email": "[email protected]",
"password": "securePassword123"
}Response
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 123,
"email": "[email protected]",
"tier": "FREE"
}
}/auth/logoutInvalidate current session token
Response
{
"success": true,
"message": "Logged out successfully"
}Transcription
/transcription/uploadUpload audio file for transcription
Content-Type
multipart/form-dataRequest Body
{
"file": "[Audio File - Up to 25MB for direct upload, use /uploads/large/init for larger files]",
"language": "auto",
"enableDiarization": false,
"enableEnhancement": false,
"enableVerification": false
}Response
{
"success": true,
"message": "Transcription job created",
"data": {
"jobId": "job_abc123",
"estimatedCost": 1500,
"estimatedTime": "2-5 minutes",
"status": "queued"
}
}/transcription/status/:jobIdCheck transcription job status
Response
{
"success": true,
"data": {
"jobId": "job_abc123",
"status": "completed",
"progress": 100,
"result": {
"text": "Transcribed text content...",
"duration": 600,
"language": "en"
}
}
}/transcription/historyGet user transcription history
Parameters
{
"page": 1,
"limit": 20
}Response
{
"success": true,
"data": {
"transcriptions": [],
"total": 50,
"page": 1,
"pages": 3
}
}/transcription/download/:jobIdDownload transcription in various formats (TXT, PDF, SRT, VTT, JSON)
Parameters
{
"format": "txt"
}Response
[File download]
User Management
/user/profileGet current user profile
Response
{
"success": true,
"data": {
"id": 123,
"email": "[email protected]",
"firstName": "John",
"tier": "PREMIUM",
"credits": 5000,
"createdAt": "2026-01-01T00:00:00Z"
}
}/user/profileUpdate user profile information
Request Body
{
"firstName": "John",
"lastName": "Doe"
}Response
{
"success": true,
"message": "Profile updated successfully"
}/user/creditsGet current credit balance and usage
Response
{
"success": true,
"data": {
"currentBalance": 5000,
"monthlyUsage": 2500,
"tier": "PREMIUM"
}
}Payment
/payment/create-checkoutCreate Stripe checkout session for credit purchase
Request Body
{
"credits": 10000,
"tier": "PREMIUM"
}Response
{
"success": true,
"sessionId": "cs_test_...",
"url": "https://checkout.stripe.com/..."
}/payment/transactionsGet payment transaction history
Response
{
"success": true,
"data": {
"transactions": [],
"total": 10
}
}Support
/supportCreate support ticket via email
Request Body
{
"email": "[email protected]",
"firstName": "John",
"subject": "Issue with transcription",
"message": "Detailed description...",
"priority": "normal"
}Response
{
"success": true,
"message": "Support ticket created successfully",
"data": {
"ticketId": "TXA-000123",
"status": "open"
}
}/support/faqGet frequently asked questions
Response
{
"success": true,
"data": [
{
"category": "General",
"questions": []
}
]
}System
/limitsGet service limits and supported formats
Response
{
"success": true,
"data": {
"maxFileSize": 104857600,
"maxDuration": 7200,
"supportedFormats": [
"mp3",
"wav",
"m4a",
"flac",
"ogg",
"aac",
"webm"
],
"rateLimits": {
"FREE": 10,
"PREMIUM": 100,
"ENTERPRISE": 1000
}
}
}/public/healthHealth check endpoint
Response
{
"success": true,
"status": "healthy"
}Example
Complete Transcription Flow
Authenticate
POST /auth/login
{
"email": "[email protected]",
"password": "yourpassword"
}
// Response includes JWT token
{ "token": "eyJhbGciOiJIUzI1NiIs..." }Upload Audio
POST /transcription/upload
Authorization: Bearer your_jwt_token
Content-Type: multipart/form-data
file: audio.mp3
language: auto
enableDiarization: true
// Response
{ "jobId": "job_abc123", "status": "queued" }Poll Status
GET /transcription/status/job_abc123
Authorization: Bearer your_jwt_token
// Response when complete
{
"status": "completed",
"result": {
"text": "Transcribed content...",
"duration": 600
}
}Download Result
GET /transcription/download/job_abc123?format=txt Authorization: Bearer your_jwt_token // Returns file download
Rate Limits
Best Practices
- Use high-quality audio (16 kHz+, minimal noise)
- Poll status endpoint every 5-10 seconds
- Implement exponential backoff for retries
- Store JWT tokens securely (never in client-side code)
- Handle 429 (rate limit) errors gracefully
Need Help with Integration?
Our technical support team is here to help you get started