Skip to content
firmus.shdocs

Every page's text, headings and title. Code samples are not indexed.

Get a job result

Download a finished file job's result, your CSV with Firmus's columns appended.

The result of a file job, as text/csv; charset=utf-8 with Content-Disposition: attachment and the name of the file you sent followed by -firmus.csv (the job's id when it had no name). Every line and column of the input is kept, in its own delimiter, behind a UTF-8 byte-order mark whatever the input had, and the firmus_ columns are appended, ending with firmus_partial: true on a row whose answer is not conclusive because its search or read ran out of time even after the job tried it again, false otherwise. Submit the true rows again rather than recording their not_found or ambiguous. A cell starting with =, +, -, @, a tab or a carriage return, other than a number, is written behind a leading apostrophe so that a spreadsheet does not run it as a formula; the submission page lists them. On a job that enriches, firmus_partial is followed by firmus_partially_disclosed, true when something on the row is masked, so that an empty cell may be withheld by law rather than missing, and firmus_sources, the registries the row's values come from, insee_sirene; bodacc 2026-06-02 when a legal field was selected. A job keeps the columns it was created with: one submitted before a column was added has none of it. A failed job's result stops after the rows it answered, its first progress.processed_rows lines.

While the job is queued or running the answer is 409 job_not_finished; it stops once the job has finished, so retrying after a few seconds is safe. A job of another organization, a job past its expires_at and an id that is not one of your jobs are 404 not_found. Downloading is not counted as a call; on Free it is refused with 402 quota_exceeded once the month's 1 000 lookups are spent.

The job's download_url serves the same file with no key, until expires_at. It is a link the API hands over rather than an operation, so it is not in the contract: use it as given, and do not build it.

GET/v1/{country_code}/jobs/{id}/resultScope read

Parameters

ParameterInTypeRequiredExample
country_codepathstringYesfr
idpathstringYesjob_Spec11111111111111111111

Request

bash
curl -H "Authorization: Bearer $FIRMUS_KEY" \
  "https://api.firmus.sh/v1/fr/jobs/job_Spec11111111111111111111/result"

Responses

The result CSV, streamed: every input column and line kept, in the file's own delimiter (and byte-order mark), the `firmus_` columns appended — a status and a confidence for resolve, a status and the selected fields for enrich. A failed job serves the rows it answered before it stopped. 409 `job_not_finished` while the job is queued or running. Not counted as a call.

Try it

Calls the real API with a demo key. No account, no signup.