Get Certificate Upload

Changed on

Retrieve a single certificate upload by id, including a short-lived document_url for the originally submitted document. This is the polling endpoint — call it until status leaves processing. Live-only.

get/tax/certificate-uploads/{upload_id}

Request

  • Base URL
    https://api.numeralhq.com
  • URL
    https://api.numeralhq.com/tax/certificate-uploads/{upload_id}
  • Auth
    HTTP bearer

Path parameters

upload_idstring required

The upload id (upl_4471) or its bare numeric form (4471).

Headers

X-API-Version'2026-03-01' required

Must be 2026-03-01 or later. Older versions return INVALID_REQUEST (400).

Response

Certificate upload detail (includes pre-signed document_url)

idstring required

Upload id, upl_<number>. Endpoints that accept an upload id also accept the bare numeric form.

objectstring required

The type of object: tax.certificate_upload

status'processing' | 'completed' | 'failed' | 'duplicate' required

Processing state of a certificate upload. This is a separate vocabulary from certificate status — an upload is a processing job, a certificate is its output. processing is the only non-terminal state; completed (certificates produced), failed (see error_message), and duplicate (same document already submitted) are terminal.

certificate_idsstring[] required

Certificates produced by this upload, usable with the certificate endpoints. Empty while status is processing; populated at completed. One document can yield multiple certificates.

error_messagestring nullable required

Human-readable reason processing failed. Also set on duplicate uploads when the original upload had failed, so you can see why re-submitting the same bytes will not help.

created_atstring date-time nullable required
livemodetrue required

Always true — these endpoints are live-only.

document_urlstring uri nullable required

Pre-signed URL to the originally submitted document. Valid for one hour — refetch the upload to mint a new URL. May be non-null while status is still processing. null (response still 200) when no document is attached. Not returned by the list endpoint. Treat as confidential.

Example response

{
  "id": "upl_4471",
  "object": "tax.certificate_upload",
  "customer": {
    "id": "cust_6126acaf-7379-411a-8ada-00005bac0715",
    "reference_customer_id": "20506"
  },
  "certificate_ids": [
    "cert_a8f3d2c1-1b9a-4c5e-8d7e-6f4a3b2c1d0e"
  ]
}

Changes