Tools

Image to Markdown API

Submit any image. Get back a readable Markdown document with OCR text, dimensions, and metadata.

Try it below:

FILEDrop a file or click to upload

Production-ready

Private by design

Security-first

Scalable

Production-ready

Private by design

Security-first

Scalable

Production-ready

Private by design

Security-first

Scalable

Turn images into Markdown

Upload an image or submit a URL, get Markdown back.

# Sprint planning whiteboard

**Kind:** image
**Created:** 2026-07-24T14:30:00.000Z
**MIME Type:** image/jpeg
**Size:** 3842048 bytes
**Chunks:** 4

## Media

**Width:** 4032
**Height:** 3024
**OCR:**
Sprint 14 June 2–13

Team: Platform (6 engineers)
Velocity: 34 pts (3-sprint avg)
Capacity: 30 pts (Jake OOO June 9–13)

To Do
- Auth token refresh (BE) 3pts unassigned
- Dashboard filter persistence 2pts unassigned
- Webhook retry logic 5pts unassigned
- Extract API rate limit headers 2pts unassigned
- Onboarding email sequence 3pts unassigned

In Progress
- CSV export performance Jake 5pts
- Onboarding flow v2 Maria 8pts
- SDK streaming upload Liam 3pts

In Review
- Billing page redesign Priya 5pts
- Memory scoping docs Alex 2pts

Done
- Rate limiter middleware Liam 3pts
- Search index migration Jake 5pts
- Worker scheduling UI Maria 3pts

Notes
- Jake handing off CSV export to Liam on June 9
- Onboarding flow v2 blocked on design review (ETA June 4)
- Carry over webhook retry logic if capacity is tight

What is Exabase's image to Markdown API?

Submit an image to the Exabase Extract API and get a Markdown document back instead of JSON. The same extraction pipeline runs: OCR, metadata extraction, and thumbnail generation. Pass ?format=markdown when retrieving the result and you get a human-readable Markdown document with the extracted text instead of a JSON object.

The Markdown output includes image dimensions, MIME type, file size, and the full OCR text. JPEG, PNG, WebP, TIFF, BMP, and other major formats are supported. No Tesseract, no OpenCV, no preprocessing pipeline.

What you get back

The Markdown response is a single text document. Image dimensions and file metadata appear at the top. The OCR text follows under a ## Media section. The result is ready to feed into an LLM context window, store as a searchable note, or use as a reference.

You can also configure webhooks with webhookFormat: "markdown" so completed jobs POST the Markdown document directly to your server.

One multi-modal API

The same POST /v2/extract endpoint handles every content type Exabase supports, and the ?format=markdown parameter works across all of them. For images, you get dimensions and OCR text. For PDFs, you get document metadata and text. For audio and video, you get duration and the transcript. For web pages, you get the title, site name, and content.

The submission flow is identical across all types. The Extract docs cover each content type in detail.

What you can build with it

Feed OCR results directly into your agent's context window as readable text. Build a document digitisation pipeline where photos of paper documents become readable Markdown. Power a searchable archive where every image's text content is stored as a readable, indexed document.

Store extracted images as Resources in a Base and the OCR text becomes searchable through Deep Search. Workers can process new images as they arrive.

Beyond Markdown

The Extract API also returns JSON (the default) with structured chunks. Use Markdown for LLM context and human review, JSON for structured processing and search indexing. The Image to JSON tool page covers the JSON output.

How do I use it?

  1. Get your API key

Free, no credit card:

Sign up at exabase.io and copy your API key from the dashboard.

  1. Submit an image file

Using the SDK (Node.js):

import { Exabase } from "@exabase/sdk";
import { createReadStream } from "fs";

const api = new Exabase({
  apiKey: process.env.EXABASE_API_KEY,
});

const job = await api.extract.createFromFile({
  file: createReadStream("./whiteboard-photo.jpg"),
  name: "Sprint planning whiteboard",
});

console.log(job.id);    // extraction job id
console.log(job.state); // "pending"
  1. Get Markdown back

Poll the job until state reaches completed, or skip polling entirely with webhooks.

curl 'https://api.exabase.io/v2/extract/<jobId>?format=markdown' \
  -H 'X-Api-Key: <EXABASE_API_KEY>'

One API call. No Tesseract, no OpenCV, no Markdown conversion.

Example output

# Sprint planning whiteboard

**Kind:** image
**Created:** 2026-07-24T14:30:00.000Z
**MIME Type:** image/jpeg
**Size:** 3842048 bytes
**Chunks:** 4

## Media

**Width:** 4032
**Height:** 3024
**OCR:**
Sprint 14 June 2–13

Team: Platform (6 engineers)
Velocity: 34 pts (3-sprint avg)

To Do
- Auth token refresh (BE) 3pts
- Dashboard filter persistence 2pts
- Webhook retry logic 5pts

In Progress
- CSV export performance Jake 5pts
- Onboarding flow v2 Maria 8pts

API quick reference

Endpoint

Method

Description

/v2/extract

POST

Submit extraction job

/v2/extract

GET

List extraction jobs

/v2/extract/{jobId}

GET

Poll for result

/v2/extract/{jobId}/chunks

GET

Fetch text chunks (JSON only)

/v2/extract-settings

PUT

Configure webhook

Auth: X-Api-Key header on all requests.

File retention: Stored files are retained for 1 day from job creation. Download or copy anything you need before they expire.

Need file extraction or full page content?

Exabase offers a full set of tools to extract content from any media, document or website.

All your data extraction needs in one place.

Why Exabase

Use cases

FAQs

What is Exabase?

Exabase is infrastructure for AI agents. It gives your agents memory, versioned file storage, AI deep search, and context automation through a set of APIs. Store what your agent learns, search inside any content type, and keep knowledge bases current automatically. Built for production use. Give your agent precise context and cut your token spend by up to 81%.

Who uses Exabase?

Developers and teams building AI agents, copilots, and RAG applications. If your agent needs to remember things between sessions, store and retrieve files, search across documents and media, or stay up to date without manual maintenance, Exabase handles that infrastructure so you can focus on your product.

How fast is processing?

Most images complete in a few seconds. Processing is asynchronous, so your application is not blocked while extraction runs.

How do I get Markdown instead of JSON?

Add ?format=markdown to the GET /v2/extract/{jobId} request. For webhooks, set webhookFormat: "markdown".

Does it handle rotated or skewed text?

The OCR engine handles common orientations and skew. For best results, images with text that's roughly upright will produce the most accurate output.

Can I still get JSON?

Yes. JSON is the default. Both formats are available from the same extraction job.

How is this different from Image to JSON?

Same pipeline, different output. Image to JSON returns structured JSON. Image to Markdown returns a readable document.

What image formats are supported?

JPEG, PNG, WebP, TIFF, BMP, and other major formats.

What if the image has no text?

The Markdown document still includes image metadata (dimensions, MIME type, size). The OCR field will be empty.

Does it handle handwriting?

Yes, with caveats. Printed and typed text is extracted reliably. Handwriting accuracy depends on legibility.

Do I have to poll for results?

No. Configure a webhook with webhookFormat: "markdown" to receive the document on completion.

How long are files retained?

Stored files are retained for 1 day from job creation, then permanently deleted.

Is there an SDK?

Yes. The @exabase/sdk package for Node.js/TypeScript handles file streaming, job polling, and chunk retrieval. Install with npm install @exabase/sdk. Or call the REST API directly from any language.

What other content types support Markdown output?

All of them. See the PDF to Markdown, Audio to Markdown, Video to Markdown, and Website to Markdown tool pages.

Deciding?

Ask your favourite AI about Exabase:

Cut your token spend and give your agent precise context.

Get started in minutes.

Cut your token spend and give your agent precise context.

Get started in minutes.