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
| Prefix | Resource 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 type | Supports external_id |
|---|
| Deliveries | Yes |
| Emission logs | Yes |
| Organisations | Yes |
| Sites | Yes |
| 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.