FurniOpsDocs
API referenceUploads

Start an upload

Stages a file for a file source: the response's target is a presigned URL to PUT the bytes to, with the headers to send, for 15 minutes. Then complete the upload. Other kinds of source, and a file larger than the snapshot limit, answer 422.

POST/v1/sources/{id}/uploads

Stages a file for a file source: the response's target is a presigned URL to PUT the bytes to, with the headers to send, for 15 minutes. Then complete the upload. Other kinds of source, and a file larger than the snapshot limit, answer 422.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Path Parameters

id*string

Source (a vendor connection) ID

Match^src_[0-9A-Za-z]{22}$

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
Idempotency-Key*string

Unique key for this operation, reused on retries (24 h)

Length1 <= length <= 257
FurniOps-Dry-Run?string

Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)

Value in

  • "true"
  • "explain"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

The file about to be uploaded

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/sources/string/uploads" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "filename": "string",    "content_type": "text/csv",    "bytes": 1  }'
{  "object": "upload",  "id": "string",  "source": "string",  "filename": "string",  "content_type": "text/csv",  "bytes": 1,  "status": "pending",  "run": "string",  "target": {    "method": "PUT",    "url": "http://example.com",    "headers": {      "property1": "string",      "property2": "string"    },    "expires_at": "2019-08-24T14:15:22Z"  },  "expires_at": "2019-08-24T14:15:22Z",  "created_at": "2019-08-24T14:15:22Z",  "completed_at": "2019-08-24T14:15:22Z"}