Overview
Some APIs require you to upload an input payload (JSON, ZIP, CSV, etc.).Instead of sending large bodies directly to Sandbox APIs, you upload the payload to a secure pre-signed AWS S3 URL using a
PUT request.
The system then processes your payload asynchronously as a job.
When a PUT Upload Is Required
You will see this workflow whenever the API endpoint mentions steps like:- Submit Job → returns
id(job ID) +url(signed S3 upload URL) - PUT Upload → upload your file or JSON payload to the S3
url - Poll Job → retrieve the processed output
How PUT Requests Work
1
Submit the Job
You first call the API endpoint that initializes the job.
The response includes:
The response includes:
Job id
Pre-signed S3 put URL
Current state of the job
Timestamp of when the job was created
Timestamp of when the job was last updated
2
PUT the Input Payload
Once you receive the pre-signed S3 URL, upload your payload (JSON, ZIP, CSV, etc.) directly to that URL using an HTTP
PUT request.The url returned in Step 1 is an AWS S3 pre-signed URL, not a Sandbox API endpoint.Requirements- Method:
PUT - Headers: only
Content-Type(and occasionally checksums if required) - Body: Your input payload.
cURL Example
3
Poll the Job Status
After successfully uploading your payload to the pre-signed S3 URL, the job begins processing on Sandbox servers.
Use the same endpoint from Step 1, but switch to a
Implement retry logic with exponential backoff.
Use the same endpoint from Step 1, but switch to a
GET request with the job_id returned earlier.Jobs usually finish within a few seconds, but large payloads or complex calculations may take longer.Implement retry logic with exponential backoff.
Polling With Job ID
Use the same route as Step 1, only changing the method toGET and adding job_id.Job Status States
A job can be in one of the following states:| Status | Description |
|---|---|
created | Job created, awaiting processing |
in_progress | Sandbox is reading your payload and computing results |
success | Output is ready to consume |
error | Processing failed; inspect the returned error message |