SafetyDataSheetAPI is a product of Dscvry. Explore Dscvry →

By team

SDS Extraction for BPO and Compliance Teams

Run SDS intake for many clients through bulk jobs, route uncertain documents to people, and keep an audit trail, with the real limits stated up front.

Last updated: 2026-10-24

A workflow that fits service teams

  1. Intake. Collect each client's SDS PDFs and keep your own record of which client each file belongs to.
  2. Submit. Send up to 10 files per bulk job with an Idempotency-Key you derive from the client and batch, for example client-a-2026-10-24-batch-3. A retry with the same key returns the existing job instead of creating a duplicate.
  3. Collect. Poll the job status, or pass a callback_url to receive a signed webhook when the job finishes.
  4. Triage. Send every document with warnings or a low confidence_score to a reviewer. Pass the rest through.
  5. Deliver. Write the reviewed records into the client's system, in JSON, XML or CSV.

Triage rules

SignalSuggested action
warnings is not emptyReview against the source document.
confidence_score below your thresholdReview. You set the threshold, ideally from a measured sample of that client's documents.
Item error_code is provider_errorRetry the file. If it keeps failing, quote the job id to support.
unsupported_file_typeAsk the client for the actual PDF.
file_too_largeSplit or compress the file.
429 rate_limitedWait the number of seconds in Retry-After.

Capacity planning: the default limits

These are the default limits on the shared hosted endpoint, enforced per client IP in 24-hour windows. Limits for self-serve and enterprise plans are set by the plan, so talk to us before sizing a large engagement.

LimitDefault
Files per bulk job10
File size10 MB per file, 40 MB per job
Bulk job submissions20 per 24 hours (up to 200 files at 10 per job)
Single-document extraction (/extract-sds)100 requests per 24 hours

Keeping clients separate

On the self-serve plan each account gets its own API key. If you need your end clients separated from each other, or a dedicated deployment with its own base URL and limits, that is an enterprise setup. Either way, keep keys on your servers and record the client, job_id and request_id with every result, and put the client in your idempotency key convention.

Audit trail

  • Store the request_id or job_id, the response JSON, and a hash of the source file.
  • Record who reviewed a flagged document and what they changed.
  • Keep the model output separate from the reviewed record so you can show both.

Languages

Client documents arrive in many languages. The API reads each PDF in its own language and returns the same field names. We do not publish per-language accuracy, so measure on a sample per client. See multilingual extraction.

FAQ

How many documents can we process per day?

On the shared hosted endpoint the defaults are up to 20 bulk jobs of 10 files per 24 hours, plus 100 single-document requests, per client IP. Self-serve and enterprise limits are set by your plan, so contact us for a large engagement.

Can each of our clients have a separate API key?

Each account on the self-serve plan has its own key. To keep many end clients separate, or to get a dedicated deployment with its own base URL, talk to us about enterprise.

Is the output reviewed by people?

No. The output is machine-generated. Use warnings and confidence to route documents to your own reviewers before delivering data to a client.

Related pages

Want to see it on your own document? Try a sample SDS or request an implementation plan.