Skip to main content
POST
/
api
/
upload
Upload one or more files to R2 storage
curl --request POST \
  --url https://your-instance.example.com/api/upload \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'files[0]=<binary: invoice.pdf>' \
  --form 'files[1]=<binary: receipt.png>' \
  --form files.items='@example-file'
{
  "files": [
    {
      "key": "orgs/65b1f0a2c3d4e5f6a7b8c9d0/uploads/2026-05-18/invoice.pdf",
      "type": "application/pdf",
      "name": "invoice.pdf",
      "size": 184221,
      "signedUrl": "https://r2.example.com/orgs/65b1.../invoice.pdf?token=...",
      "bucket": "tether-uploads"
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.tetherai.ca/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

multipart/form-data

Multipart form. Send each file as a separate files part. Example with curl: curl -F "files=@invoice.pdf" -F "files=@receipt.png" -H "Authorization: Bearer $TOKEN" /api/upload.

files
file[]
required

Up to 10 binary files, each ≤50 MB. Field name must be exactly files.

Maximum array length: 10

Response

Files uploaded

files
object[]
required