Decide Documentation

API

Use Decide APIs from your backend or internal tools. Authenticate with a Bearer API key, upload a file, and poll the returned job until the result is ready.

  1. 1

    Create an API key

    Generate a key in Decide settings and keep it server-side.

  2. 2

    Send a request

    Upload a document, spreadsheet, data file, or image to the matching endpoint.

  3. 3

    Poll the job

    Check the returned status URL until processing is complete.

  4. 4

    Read the result

    Use the structured JSON, CSV, or Excel result from the response.

Document extraction

Extract structured financial statement data from PDFs and documents, with normalized values and source context.

POST /v1/documents/extract
curl
1curl -X POST https://api.trydecide.ai/v1/documents/extract \
2 -H "Authorization: Bearer YOUR_API_KEY" \
4 -F "schema=financial_statements"

Spreadsheet reports

Turn documents, images, exports, and data files into clean Excel workbooks, CSVs, or both.

POST /v1/spreadsheets
curl
1curl -X POST https://api.trydecide.ai/v1/spreadsheets \
2 -H "Authorization: Bearer YOUR_API_KEY" \
4 -F "output_format=both" \
5 -F "prompt=Use one row per transaction"

Image extraction

Extract structured information from images, including items, quantities, and other fields in visual documents.

POST /v1/images/extract
curl
1curl -X POST https://api.trydecide.ai/v1/images/extract \
2 -H "Authorization: Bearer YOUR_API_KEY" \

Endpoint reference

All API requests use the base URL https://api.trydecide.ai and a Bearer API key.

Document extraction

POST/v1/documents/extractSubmit one document

Request fields

  • file · required · PDF or supported document
  • schema · optional · for example financial_statements
  • return_sources · optional · include source evidence

Response: Returns extraction_id and status_url.

GET/v1/documents/extract/:extractionIdPoll one extraction

Request fields

  • extractionId · required · returned by the submit request

Response: Returns processing status, normalized cells, statements, warnings, and source context when complete.

POST/v1/documents/extract/batchesSubmit multiple documents

Request fields

  • files · required · one or more documents
  • schema · optional · extraction schema
  • return_sources · optional · include source evidence
  • batch_label · optional · label for the batch

Response: Returns batch_id, item statuses, and a status_url.

GET/v1/documents/extract/batches/:batchIdPoll a document batch

Request fields

  • batchId · required · returned by the batch submit request

Response: Returns batch progress, completed items, failures, and extraction status URLs.

Image extraction

POST/v1/images/extractExtract one image

Request fields

  • image · required · image file to inspect

Response: Returns structured extracted items and fields.

POST/v1/images/extract/batchesSubmit multiple images

Request fields

  • images · required · one or more image files

Response: Returns batch_id, item statuses, and progress_percent.

GET/v1/images/extract/batches/:batchIdPoll an image batch

Request fields

  • batchId · required · returned by the batch submit request

Response: Returns batch progress and extracted data for completed images.

Spreadsheet reports

POST/v1/spreadsheetsCreate an Excel or CSV report

Request fields

  • file · required · source document, image, export, or data file
  • output_format · optional · xlsx, csv, or both
  • prompt · optional · formatting guidance
  • metadata · optional · JSON echoed in the result
  • webhook_url · optional · terminal result callback
  • webhook_secret · optional · webhook signature secret

Response: Returns conversion_id, status_url, billing status, and webhook status.

GET/v1/spreadsheets/:conversionIdPoll one report

Request fields

  • conversionId · required · returned by the submit request

Response: Returns status, generated file URLs, metadata, and terminal error details.

POST/v1/spreadsheets/batchesCreate reports from multiple files

Request fields

  • files · required · one to 20 source files
  • output_format · optional · xlsx, csv, or both
  • prompt · optional · shared formatting guidance
  • batch_label · optional · label for the batch
  • metadata · optional · shared JSON metadata
  • webhook_url · optional · final batch callback

Response: Returns batch_id, item statuses, progress, and a status_url.

GET/v1/spreadsheets/batches/:batchIdPoll a report batch

Request fields

  • batchId · required · returned by the batch submit request

Response: Returns batch counts, progress, file results, and item errors.

Scheduled spreadsheet reports

POST/v1/spreadsheets-schedulesCreate a scheduled report

Request fields

  • files · required · source files
  • recipients · required · report recipients
  • run_at or cron · required · one-time or recurring schedule
  • output_format · optional · xlsx, csv, or both
  • timezone · optional · schedule timezone
  • prompt · optional · report instructions
  • webhook_url · optional · completion callback

Response: Returns a schedule ID and the next scheduled run.

GET/v1/spreadsheets-schedulesList scheduled reports

Request fields

  • No request body. Use the API key to list schedules.

Response: Returns schedules available to the authenticated account.

GET/v1/spreadsheets-schedules/:scheduleIdGet a schedule

Request fields

  • scheduleId · required · schedule identifier

Response: Returns schedule configuration, status, and next run details.

POST/v1/spreadsheets-schedules/:scheduleId/cancelCancel a schedule

Request fields

  • scheduleId · required · schedule identifier

Response: Returns the cancelled schedule status.

Polling a job
curl
1curl -X POST https://api.trydecide.ai/v1/spreadsheets \
2 -H "Authorization: Bearer YOUR_API_KEY" \
4 -F "output_format=xlsx" \
5 -F "prompt=Create a sales report with summary statistics"
6
7curl https://api.trydecide.ai/v1/spreadsheets/scv_123 \
8 -H "Authorization: Bearer YOUR_API_KEY"

Large files run asynchronously. Document and spreadsheet jobs return an ID and status URL; image extraction also supports batch processing.

Manage API keys in Decide settings