Tools

Image to JSON API

Submit any image. Get back OCR text, dimensions, metadata, and a thumbnail as structured JSON.

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 structured JSON

Upload an image or submit a URL, get structured JSON back.

{
  "kind": "image",
  "name": "",
  "url": null,
  "state": "completed",
  "createdAt": "2026-07-19T13:38:46.727Z",
  "extraction": {
    "common": {
      "mimeType": "image/png",
      "size": 720583,
      "infected": false,
      "caption": "A small page with a centered diagram labeled “FIGURE 1: Prisma flow diagram” near the bottom. The diagram is a vertical flowchart with several rectangular boxes connected by arrows, arranged in multiple horizontal levels. The left side features a vertical blue sidebar with stacked labels: “Subjects,” “Imaging,” “Data,” and “Analysis” (or similar). At the top left there is a bold title “Cureus.” The surrounding text blocks form a typical academic article layout: a block of introductory text above, a large flow diagram in the middle, and a “Discussion” section header toward the bottom. In the diagram, some boxes contain concise phrases likely describing steps or stages in a Prisma flow process. The page has a light gray background with black text. There may be small figure labels indicating steps like “screened,” “assessed for eligibility,” and similar terms, but the exact wording is difficult to read.",
      "keywords": [
        "PRISMA",
        "academic",
        "medical",
        "infographic",
        "research",
        "flowchart",
        "diagram",
        "methodology"
      ]
    },
    "media": {
      "width": 1812,
      "height": 2568,
      "color": {
        "profile": "LG HDR 4K",
        "space": "RGBA",
        "alphaChannel": true
      },
      "dominantColors": [
        {
          "rgb": [
            255,
            255,
            255
          ],
          "score": 0.62
        },
        {
          "rgb": [
            191,
            191,
            192
          ],
          "score": 0.08
        },
        {
          "rgb": [
            239,
            240,
            240
          ],
          "score": 0.08
        },
        {
          "rgb": [
            245,
            245,
            245
          ],
          "score": 0.06
        },
        {
          "rgb": [
            214,
            218,
            219
          ],
          "score": 0.06
        },
        {
          "rgb": [
            230,
            230,
            230
          ],
          "score": 0.05
        }
      ],
      "ocr": "Cureus, applying both inclusion and exclusion criteria, 44,911 were retained for the analysis. Reviewing, large database yielded many duplicates, which were removed as precisely as humanly, possible by comparing the title, authors, and metadata In total, 11,228 studies remained after, deduplication. Among the 11,228 studies, 553 studies were screened based on the title and, abstract; out of which 205 potentially relevant studies were identified. Of these;, 134, publications were ruled out after their full-text was found to be unavailable, total of 50, studies were selected and included in our analysis. Two Japanese and one Spanish article were, also included as translations were found in PubMed: The PRISMA flow chart for the process is, shown below (Figure, Additional records identified, through other sources, (n=1), Records after duplicates removed, 11,228), Records screened, Records excluded, 553), 10,675}, Full-text articles assessed, Full-text articles excluded;, for eligibility, with reasons, I, 134), 1331, Studies included, qualitative synthesis, 205), ], Studies included in, quantitative synthesis, (meta-analysis), 501, FIGURE 1: Prisma, diagram, Discussion, Physiological/Structural and Functional Connectivity and Memory Formation and Synaptic Plasticity, Learning and Memory, Molecular, cellular, and chemical basis of memory: Changes in the neuronal circuit of the, hippocampus leads to memory formation By integrating neuronal function, and improving the, strength of their connections, synaptoplasticity is improved and consolidated [11]. Episodic, memories relay in the hippocampus and the associated structures. It is believed that episodic, memory and spatial coding share the same circuitry and algorithms. There have been recent, advances in und, lerstanding the cooperation and specialization of bilateral hippocampi; the role, of synaptic plasticity in gamma phase-locking of spikes and place cell formation, a prefrontal-, thalamo-hippocampal circuit for goal-directed spatial navigation [7]. For investigating the, neural concepts behind memory, some studies focus on the hippocampus and medial temporal, lobe (MTL) structures_, To understand how memory, 'signals from the hippocampus affect motor, 2019 Joshi et al. Cureus 11(9): e5795. DOI 10.7759/cureus.5795, 4 of 14, such, flow"
    }
  }
}

What is Exabase's image to JSON API?

Submit an image to the Exabase Extract API and get structured JSON back. The response includes any text found in the image via OCR, the image dimensions, MIME type, file size, a CDN-hosted thumbnail, and the text content split into searchable chunks. JPEG, PNG, WebP, TIFF, BMP, and other major formats are supported.

The same POST /v2/extract endpoint accepts both file uploads and URLs pointing to hosted images. OCR and metadata extraction happen on Exabase's infrastructure. No Tesseract, no OpenCV, no image processing pipeline on your end.

What you get back

The response includes the image dimensions (width and height), any text extracted via OCR, and the text split into searchable chunks. You also get the MIME type, file size, total chunk count, and a CDN-hosted thumbnail. The API reference has the complete response schema.

One multi-modal API

The same POST /v2/extract endpoint handles every content type Exabase supports. For images, it runs OCR and returns the extracted text as chunks alongside image dimensions. For PDFs, it returns page count, author, title, and (for recognised document types like invoices, contracts, and resumes) structured field extraction. For audio and video, it generates full transcripts with timestamps. For web pages, it renders JavaScript and extracts the content.

The submission flow is identical across all types: one endpoint, one SDK method, one webhook configuration. You learn the pattern once and use it for everything. The Extract docs cover each content type in detail.

What you can build with it

The structured chunks are the same format used across the Exabase platform. Extract text from photos of documents, receipts, whiteboards, or handwritten notes. Build a searchable archive of screenshots where every word in every image is indexed. Process product photos and extract labels, specifications, or serial numbers. Feed OCR output into a RAG pipeline so your agent can reference what's in the image.

Store extracted images as Resources in a Base and the OCR text becomes searchable through Deep Search at the chunk level. Workers can re-extract updated images on a schedule, keeping your index current without manual work.

Beyond transcription

The Extract API returns more than the text in the image. You get structured metadata, dimensions, a CDN-hosted thumbnail, and chunks you can index directly. Store the output as a Resource and it's searchable through Deep Search immediately. Extract key facts into Memory so your agent retains what it read between sessions. The Submitting Jobs guide at https://exabase.io/docs/developer-guide/extraction/submitting-jobs walks through the full flow.

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("./receipt.jpg"),
  name: "Expense receipt — June 2026",
});

console.log(job.id);    // extraction job id
console.log(job.state); // "pending"
  1. Get the result

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

const result = await api.extract.get({ jobId: job.id });

if (result.state === "completed") {
  console.log(result.extraction?.media?.width);
  console.log(result.extraction?.media?.height);
  console.log(result.extraction?.media?.ocr);
  console.log(result.extraction?.common?.chunkCount);
  console.log(result.extraction?.common?.thumbnail);
}

One API call. No Tesseract, no OpenCV, no image processing stack.

What you get back

Field

Type

Description

state

string

completed or failed

kind

string

image

extraction.common.mimeType

string

Detected MIME type (e.g. image/jpeg)

extraction.common.size

number

File size in bytes

extraction.common.thumbnail

string

CDN-hosted thumbnail URL

extraction.common.chunkCount

number

Number of text chunks from OCR

extraction.media.width

number

Image width in pixels

extraction.media.height

number

Image height in pixels

extraction.media.ocr

string

Full OCR text

Text chunks are retrieved separately via GET /v2/extract/{jobId}/chunks.

Each chunk includes a sequence number and the extracted text.

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

/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

Comparisons

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.

What image formats are supported?

JPEG, PNG, WebP, TIFF, BMP, and other major image formats. The API auto-detects the content type and processes accordingly.

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.

What if the image has no text?

The API still returns image metadata (dimensions, MIME type, file size, thumbnail). The OCR field will be empty and chunk count will be zero.

Can I submit a URL instead of uploading a file?

Yes. Pass a url field in the request body pointing to a publicly accessible image. Exabase fetches and processes it.

Do I have to poll for results?

No. You can configure a webhook URL and Exabase will POST the full result to your server when processing completes. The webhooks guide covers setup.

What happens if extraction fails?

The job state moves to failed. You can call the reprocess endpoint to retry without re-uploading the original file.

How long are files retained?

Stored files are retained for 1 day from job creation, then permanently deleted. Download or copy anything you need before the retention window expires.

Can I use the extracted text with other Exabase features?

Yes. Store extracted images as a Resource in a Base and the OCR text becomes searchable through Deep Search. Extract key facts into Memory so your agent retains what it read. Workers can re-extract updated images on a schedule.

How is this different from the Image to Text tool?

The Image to Text page focuses on the OCR output specifically. Image to JSON covers the full extraction response: metadata, dimensions, thumbnail, OCR text, and chunks. Same underlying API, different emphasis.

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 does Extract support?

PDFs, audio files (with transcription), video files (with transcription), web pages, and documents. The same POST /v2/extract endpoint handles all of them. See the PDF to JSON, Audio to JSON, Video to JSON, and Website to JSON 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.