Skip to main content

Server-assigned IDs (TypeID)

Every resource has a server-assigned id in TypeID format:
stp_01kqzcjrpxf27tge33jwvjhkff
TypeIDs are K-sortable and prefixed with the resource type. The prefix is separated from the suffix by an underscore (_).

TypeID prefix table

PrefixResource type
stp_Steps (material sourcing / processing / application)
dlv_Deliveries
leg_Delivery legs
ste_Sites
org_Organisations
mat_Materials
fil_Files
eml_Emission logs
mct_Material containers
wbh_Webhooks
dpc_Data point configs
stc_Step configs
dlc_Delivery configs
elc_Emission log configs

External IDs

Some core operational resources support an optional external_id that you assign on creation. External IDs are unique within the combination of resource type and organisation.
Resource typeSupports external_id
DeliveriesYes
Emission logsYes
OrganisationsYes
SitesYes
Steps (material sourcing / processing / application)Yes
Use external IDs to reference these resources from your own systems without storing Cula TypeIDs.
Config resources (step configs, delivery configs, data point configs, emission log configs) and other platform-managed resources do not support external IDs. They are identified exclusively by their server-assigned TypeID.

ResourceRef pattern

When a field references another resource, such as a delivery sender site, the API uses a ResourceRef object. For resource types that support external IDs, you can provide either id or external_id, not both:
// Reference by Cula TypeID
{ "sender_site": { "id": "ste_01kqzcjrpxf27tge33jwvjhkff" } }

// Reference by your external ID
{ "sender_site": { "external_id": "MY-FARM-001" } }
In responses, references are always resolved to include both identifiers:
{ "sender_site": { "id": "ste_01kqzcjrpxf27tge33jwvjhkff", "external_id": "MY-FARM-001" } }

GET by ID

For resource types that support external IDs, GET /v1/{resource}/{id} endpoints accept either format:
  • TypeID: GET /v1/material-sourcing/stp_01kqzcjrpxf27tge33jwvjhkff
  • External ID: GET /v1/material-sourcing/ext-MY-STEP-001
The ext- prefix avoids collisions because TypeIDs use _ as their separator. Resources without external ID support (configs, files, webhooks, etc.) are always fetched by TypeID.
External IDs are optional. For supported resource types, you can set one on creation or add/change it later via PATCH. If no external ID is set, reference the resource by its TypeID.