Sign Customiser

Declares a file and returns a short-lived presigned target to send its bytes to. Requires customisers:write and an Idempotency-Key.

POST/api/v3/uploads

Overview

The purpose selects the accepted file types and the size cap, so declare the purpose of the slot you intend to attach to. Both the filename extension and the content type must be ones the purpose accepts; a mismatch answers 422 with the accepted values, and an oversized declaration answers 422 with max_byte_size. Send the bytes with the upload_target: use its method, its url, and every header it lists, with the file as the raw request body. The target expires about ten minutes after it is issued and is returned only by this response, so do not cache or store it. An idempotent replay of this request returns the recorded body with upload_target set to null, which means a retry after the target expired needs a new upload rather than the same one. Poll GET/api/v3/uploads/{upload_id} to confirm the bytes landed. Nothing is verified here. The declared size and type are what the API will issue a target for; the actual bytes are checked when you attach the upload to a file slot, and a file that fails that check is refused then.

Authorisation

Bearer token required. Include it in theAuthorization header.

Required scope: customisers:write

Request body

purposestringbody
filenamestringbody
content_typestringbody
byte_sizeintegerbody

Request body example

application/json
{
  "purpose": "font_ttf",
  "filename": "Signature.ttf",
  "content_type": "font/ttf",
  "byte_size": 184320
}
Create an upload
curl https://web.signcustomiser.com/api/v3/uploads \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "purpose": "font_ttf",
  "filename": "Signature.ttf",
  "content_type": "font/ttf",
  "byte_size": 184320
}'
Response
{
  "data": {
    "object": "upload",
    "id": "upl_9f2c4b7ad13e6058ba41cd",
    "purpose": "font_ttf",
    "filename": "Signature.ttf",
    "content_type": "font/ttf",
    "byte_size": 184320,
    "status": "pending",
    "verification_failure_code": null,
    "expires_at": "2026-07-23T00:00:00Z",
    "attached_at": null,
    "created_at": "2026-07-22T00:00:00Z",
    "upload_target": {
      "method": "PUT",
      "url": "https://uploads.example.invalid/staged-upload-target-example",
      "headers": {},
      "expires_at": "2026-07-22T00:10:00Z"
    }
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/uploads/upl_9f2c4b7ad13e6058ba41cd",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}