API Documentation

Integrate TranscribeAI into your applications

Quick Start

1

Register Account

Create a free account at scribit.ai to get started with your API credentials.

2

Get API Token

Authenticate via POST /auth/login to receive your JWT token.

3

Start Transcribing

Upload audio files and receive accurate transcriptions via our API.

Base URL

https://api.scribit.ai

Authentication

All API requests require authentication using an API key

Authorization: Bearer your_jwt_token_here

Endpoints

Authentication

POST
/auth/login

Authenticate and receive JWT token

Request Body

{
  "email": "[email protected]",
  "password": "securePassword123"
}

Response

{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 123,
    "email": "[email protected]",
    "tier": "FREE"
  }
}
POST๐Ÿ”’ Auth Required
/auth/logout

Invalidate current session token

Response

{
  "success": true,
  "message": "Logged out successfully"
}

Transcription

POST๐Ÿ”’ Auth Required
/transcription/upload

Upload audio file for transcription

Content-Type

multipart/form-data

Request 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"
  }
}
GET๐Ÿ”’ Auth Required
/transcription/status/:jobId

Check transcription job status

Response

{
  "success": true,
  "data": {
    "jobId": "job_abc123",
    "status": "completed",
    "progress": 100,
    "result": {
      "text": "Transcribed text content...",
      "duration": 600,
      "language": "en"
    }
  }
}
GET๐Ÿ”’ Auth Required
/transcription/history

Get user transcription history

Parameters

{
  "page": 1,
  "limit": 20
}

Response

{
  "success": true,
  "data": {
    "transcriptions": [],
    "total": 50,
    "page": 1,
    "pages": 3
  }
}
GET๐Ÿ”’ Auth Required
/transcription/download/:jobId

Download transcription in various formats (TXT, PDF, SRT, VTT, JSON)

Parameters

{
  "format": "txt"
}

Response

[File download]

User Management

GET๐Ÿ”’ Auth Required
/user/profile

Get current user profile

Response

{
  "success": true,
  "data": {
    "id": 123,
    "email": "[email protected]",
    "firstName": "John",
    "tier": "PREMIUM",
    "credits": 5000,
    "createdAt": "2026-01-01T00:00:00Z"
  }
}
PUT๐Ÿ”’ Auth Required
/user/profile

Update user profile information

Request Body

{
  "firstName": "John",
  "lastName": "Doe"
}

Response

{
  "success": true,
  "message": "Profile updated successfully"
}
GET๐Ÿ”’ Auth Required
/user/credits

Get current credit balance and usage

Response

{
  "success": true,
  "data": {
    "currentBalance": 5000,
    "monthlyUsage": 2500,
    "tier": "PREMIUM"
  }
}

Payment

POST๐Ÿ”’ Auth Required
/payment/create-checkout

Create Stripe checkout session for credit purchase

Request Body

{
  "credits": 10000,
  "tier": "PREMIUM"
}

Response

{
  "success": true,
  "sessionId": "cs_test_...",
  "url": "https://checkout.stripe.com/..."
}
GET๐Ÿ”’ Auth Required
/payment/transactions

Get payment transaction history

Response

{
  "success": true,
  "data": {
    "transactions": [],
    "total": 10
  }
}

Support

POST
/support

Create 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"
  }
}
GET
/support/faq

Get frequently asked questions

Response

{
  "success": true,
  "data": [
    {
      "category": "General",
      "questions": []
    }
  ]
}

System

GET
/limits

Get 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
    }
  }
}
GET
/public/health

Health check endpoint

Response

{
  "success": true,
  "status": "healthy"
}

Example

Complete Transcription Flow

1

Authenticate

POST /auth/login
{
  "email": "[email protected]",
  "password": "yourpassword"
}

// Response includes JWT token
{ "token": "eyJhbGciOiJIUzI1NiIs..." }
2

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" }
3

Poll Status

GET /transcription/status/job_abc123
Authorization: Bearer your_jwt_token

// Response when complete
{ 
  "status": "completed",
  "result": {
    "text": "Transcribed content...",
    "duration": 600
  }
}
4

Download Result

GET /transcription/download/job_abc123?format=txt
Authorization: Bearer your_jwt_token

// Returns file download

Rate Limits

Requests1,000 per 15 minutes per IP address
Jobs at the same time, no subscription1
Jobs at the same time, Starter and Professional3
Jobs at the same time, Business10

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