Skip to main content

API Documentation

Integrate To-Markdown's powerful conversion capabilities into your applications with our REST API.

Authentication

Use an API key in the Authorization header for programmatic access:

Authorization: Bearer YOUR_API_KEY

The web UI uses a signed server session cookie and does not expose API keys in frontend code.

Rate Limits

  • /api/v1/convert/file: 100 requests/hour
  • /api/v1/convert/file/async: 100 requests/hour
  • /api/v1/convert/url: 30 requests/hour
  • /api/v1/convert/youtube: 30 requests/hour
  • /api/v1/convert/text: 120 requests/hour
  • /api/v1/convert/jobs/{job_id}: 120 requests/hour
  • /tools/ocr/process: 30 requests/hour

Endpoints

Convert Document

Convert a document to Markdown format.

POST /api/v1/convert/file

Parameters

Name Type Description
file File The document to convert

For long-running conversions, use async endpoint POST /api/v1/convert/file/async and poll GET /api/v1/convert/jobs/{job_id}.

Queue Conversion Job

Submit file conversion asynchronously and get a job id.

POST /api/v1/convert/file/async

Get Job Status

Query conversion job progress and retrieve result when completed.

GET /api/v1/convert/jobs/{job_id}

Convert Web URL

Convert a public HTTP/HTTPS webpage URL to Markdown.

POST /api/v1/convert/url?url=https://example.com

Convert YouTube URL

Convert a YouTube video URL to transcript-ready Markdown.

POST /api/v1/convert/youtube?url=https://www.youtube.com/watch?v=VIDEO_ID

Error Handling

The API uses conventional HTTP response codes to indicate the success or failure of an API request:

  • 200: Success
  • 400: Bad Request
  • 401: Unauthorized
  • 403: Forbidden
  • 429: Too Many Requests
  • 500: Internal Server Error

Examples

cURL

curl -X POST https://api.to-markdown.com/api/v1/convert/file \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -F "[email protected]"

Async cURL

# 1) Queue a job
curl -X POST https://api.to-markdown.com/api/v1/convert/file/async \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -F "[email protected]"

# 2) Poll status
curl -X GET https://api.to-markdown.com/api/v1/convert/jobs/JOB_ID \
    -H "Authorization: Bearer YOUR_API_KEY"

YouTube cURL

curl -X POST "https://api.to-markdown.com/api/v1/convert/youtube?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DVIDEO_ID" \
    -H "Authorization: Bearer YOUR_API_KEY"

Python

import requests

url = 'https://api.to-markdown.com/api/v1/convert/file'
headers = {'Authorization': 'Bearer YOUR_API_KEY'}
files = {'file': open('document.pdf', 'rb')}

response = requests.post(url, headers=headers, files=files)
markdown = response.json()['markdown']

JavaScript

const formData = new FormData();
formData.append('file', file);

const response = await fetch('https://api.to-markdown.com/api/v1/convert/file', {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer YOUR_API_KEY'
    },
    body: formData
});

const data = await response.json();
const markdown = data.markdown;