Skip to main content
POST
/
files
Upload a file
curl --request POST \
  --url https://api.demo.cula.earth/tracking/v1/files \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: multipart/form-data' \
  --header 'Cula-Organisation-Id: <cula-organisation-id>' \
  --form file='@example-file' \
  --form site=ste_01kqzcjrpyf27tge6smsbnhkh5
{
  "id": "fil_01kqzcjrpyf27tgeaqk8twgw91",
  "file_name": "puro_LCA_RCCS_Q4.xlsm",
  "file_size_bytes": 2451230,
  "mime_type": "application/vnd.ms-excel.sheet.macroEnabled.12",
  "site": {
    "id": "ste_01kqzcjrpyf27tge6smsbnhkh5",
    "external_id": "GC-SITE-REFINERY"
  },
  "created_at": "2026-05-06T19:34:00Z"
}

Authorizations

Authorization
string
header
required

OAuth2 client credentials flow. Exchange your client_id and client_secret for a short-lived access token, then pass it as a Bearer token in the Authorization header.

Headers

Cula-Organisation-Id
string
required

Organisation ID that scopes this request. The authenticated consumer must be authorized for this organisation. Omitting this header returns 400; passing an unauthorised org returns 403.

Body

multipart/form-data
file
file
required

File to upload. Maximum size is 30 MiB.

site
string
required

ID or ext-{externalId} of the site this file belongs to.

Example:

"ste_01kqzcjrpyf27tge6smsbnhkh5"

Response

File uploaded.

id
string
required
Example:

"fil_01kqzcjrpyf27tgeaqk8twgw91"

file_name
string
required
Example:

"puro_LCA_RCCS_Q4.xlsm"

file_size_bytes
integer
required
Example:

2451230

mime_type
string
required
Example:

"application/vnd.ms-excel.sheet.macroEnabled.12"

site
object
required

The site this file belongs to.

created_at
string<date-time>
required