Companies
Get bulk-delivery job status for companies
Authorization
Path parameters
jobIdstringrequiredJob ID returned by POST /v1/companies/bulk-delivery
Responses
200objectJob status (resultsUrl re-signed if completed)Show attributesHide attributes
billingenumcredits = billed at 1 credit per delivered row. none = not billed (deliveries submitted from the ModelMatch web app).
creditsnonebillingReasonenumWhy billing is none: first_party_push_target = a push-target delivery submitted from the ModelMatch web app; first_party_download = a file delivery submitted from the ModelMatch web app.
first_party_push_targetfirst_party_downloadbillingStatusenumOutcome of the job's single debit, taken before anything is delivered: charged, capped (balance / spend cap / daily cap declined it — the job fails insufficient_credits), billing_error (the debit could not be made — the job fails billing_unavailable), or none (nothing to bill: free delivery or zero rows). Absent until billing has run, and on older jobs.
chargedcappedbilling_errornonebytesintegerchargedCountintegerDelivered-row count that was billed.
completedAtstringcreditLedgerIdstringCredit-ledger entry id for this job's debit. Absent if billing didn't land.
creditsChargednumberCredits ACTUALLY debited for this job (1 credit / row) — 0 when the debit was declined or failed; read billingStatus for why. Absent until billing has run.
destinationobjectWhere the finished delivery goes. Omit for the default — a file you download from the status endpoint. push-target: when the job completes, the rows are handed to the named push target, which sends them to its configured HTTPS destination using its own field mapping and signing. The target is checked at submit (it must exist, be enabled, accept this entity, and be usable by you on your plan) — a failed check rejects the submit with the push target's error code. format is ignored (the handoff is always gzipped NDJSON), and when the target's mapping reads only some fields, only those fields (plus id) are delivered. Row limits, entitlements, limit, and billing (1 credit / row) are unchanged, except that deliveries submitted from the ModelMatch web app are not billed. Poll the job for pushBatchId; a handoff that cannot be completed fails the job with error push_handoff_failed and is not billed.
Show child attributesHide child attributes
targetIdstringrequiredId of a push target configured on the active workspace (or your own member push targets).
typeenumrequiredpush-targetdownloadUrlstringStable, shareable download link for the completed dataset. Forces a file download (with a friendly filename) and stays valid for 7 days after completion. Present once status is completed. This is the link to hand to a user or send by email.
entityTypestringerrorstringWhy the job failed. insufficient_credits = the charge was declined (balance, spend cap or daily cap), nothing delivered. billing_unavailable = the charge could not be made, nothing delivered — retry. push_handoff_failed = the rows were exported and charged but could not be handed to the push target (see billingStatus).
estimatedTotalintegerformatenumOutput file format for the delivered dataset. Every format contains the same rows — the entity's list/summary DTO (e.g. LoanSummary), one record per row. ndjson: gzipped newline-delimited JSON (application/x-ndjson, .ndjson.gz). json: a single JSON array (application/json, .json). csv: RFC 4180 (text/csv, .csv). parquet: typed columnar Apache Parquet — scalar fields keep their DTO types, nested fields are JSON-encoded strings (application/vnd.apache.parquet, .parquet). xlsx: a single-sheet Excel workbook with a bold, frozen header row — numbers are numeric cells, everything else (ids, zips, phones) text cells (.xlsx). Pair with columns for labelled headers and number formats. Required on submit unless destination is a push target, which always delivers gzipped NDJSON (a missing format on a file delivery is a 400 format_required).
ndjsonjsoncsvparquetxlsxjobIdstringrequiredprocessedintegerpushBatchIdstringPush-target deliveries only: the batch the push target is sending, set once the completed file was handed off. Per-record send progress is tracked by the push target, not this job.
resultsUrlstringDirect download URL for the completed dataset. Long-lived per request but changes on each poll; prefer downloadUrl for a stable link to share.
startedAtstringstatusenumrequiredqueuedrunningcompletedfailedcancelled401objectAuthentication required403objectCaller does not own this job404objectJob not found (or expired past 30d TTL)