Image to Text

Image to text API. Your images. Your pipeline.

An image to text API built for developers. Submit an image, get a job ID, retrieve usable Markdown. The CLI and MCP server use the same API and image credits.

Personal, Developer, Team, and Enterprise include API, CLI, MCP, and batch requests. All channels share your image credits.

curl https://imagetotext.dev/api/v1/convert \
  -H "Authorization: Bearer $IMAGETOTEXT_API_KEY" \
  -H "Idempotency-Key: example-conversion-0001" \
  -F "file=@screenshot.png;type=image/png" \
  -F "keepImages=false"

Use Image to Text from your terminal or AI agent.

The CLI and MCP client use the same API, jobs, and image credits as your account.

Personal, Developer, Team, and Enterprise include API, CLI, MCP, and batch requests. All channels share your image credits.

Install the client

Requires Node.js 20+. Install the downloadable package, then set your service URL and product API key.

npm install --global https://imagetotext.dev/downloads/imagetotext-client-0.1.0.tgz
Download CLI + MCP package (.tgz)
export IMAGETOTEXT_BASE_URL="https://imagetotext.dev"
# Set IMAGETOTEXT_API_KEY in your shell or secret manager.
imagetotext usage
imagetotext convert screenshot.png \
  --output document.md \
  --idempotency-key document-request-0001
imagetotext batch receipt.jpg notes.png \
  --idempotency-key batch-request-000001

Commands emit JSON for scripts. Errors and generated request IDs go to stderr. Output files are never overwritten. Use the same request ID and files after an interrupted upload.

image_to_text_convertSubmit one image and return a job ID.
image_to_text_batchSubmit up to 10 images with per-file receipts.
image_to_text_get_jobRead status and paginated Markdown, up to 20,000 characters per call.
image_to_text_get_batchQuery every file in a batch.
image_to_text_usageCheck credits, monthly usage and plan access.

Machine-readable integration references: llms.txt / developers.md / OpenAPI

Endpoints

POST/api/v1/convertSubmit one JPG, PNG, or WebP. Returns HTTP 202 and a job ID.
POST/api/v1/batchesSubmit up to 10 images as repeated files fields.
GET/api/v1/jobs/{id}Read job status and the completed Markdown result.
GET/api/v1/batches/{id}Read per-file batch status. Download results through the jobs endpoint.
GET/api/v1/usageRead available credits and this UTC month’s conversion usage.

Submit, poll, retrieve

Set your key in the IMAGETOTEXT_API_KEY environment variable. Keep it on your server. After submission, poll the job or batch endpoint every 5 seconds until jobs are success or failed. Browser session cookies do not authenticate /api/v1 endpoints.

# Illustrative submission response, not a live conversion result
{
  "code": 0,
  "message": "ok",
  "data": {
    "id": "image_…",
    "status": "pending",
    "fileName": "screenshot.png",
    "pages": 1,
    "quality": null
  }
}

curl https://imagetotext.dev/api/v1/jobs/JOB_ID \
  -H "Authorization: Bearer $IMAGETOTEXT_API_KEY"

A successful job returns result.markdown, result.pages, and result.images (name + base64 data). Failed jobs return an error code. Batch responses exclude result bodies; fetch each completed job separately. Outbound customer webhooks are not yet available.

Upload and request limits

JPG, PNG, WebP only. Up to 10 MB and 25 megapixels per image; 10 images and 25 MB per batch. Batches are validated before submission. Writes require 2 seconds between requests per account, reads 0.5 seconds. HTTP 429 includes Retry-After.

Retry without duplicate charges

Send an Idempotency-Key of 16-80 letters, digits, underscores or hyphens. Reuse it with the same files, order and options when retrying a network interruption. A different payload returns HTTP 409. A batch can partially submit; resubmit the same batch to attempt missing files. Failed jobs require a new key.

Errors and billing

Responses contain code, message, and data. code 0 is success. HTTP 401: invalid key; 402: insufficient credits; 403: paid plan required or API disabled; 404: unknown job; 409: idempotency conflict; 413: too large; 429: rate limit; 503: engine unconfigured. One credit per image, refunded on failure.

Parse quality

A provider quality score is a review signal, not a measured recognition accuracy. When the engine does not return a score, we show it as unavailable. The API returns quality: null when unavailable. A supplied score uses score, scale: 5, source: "provider" . Word-level confidence and review overlays are not included in this release.