# Cula Docs ## Docs - [Download a file](https://docs.cula.tech/api-reference/files/download-a-file.md): Stream the raw file bytes. The response `Content-Type` header is set to the original MIME type of the uploaded file (e.g. `application/pdf`, `image/png`). The `Content-Disposition` header includes the original file name. - [Get file metadata](https://docs.cula.tech/api-reference/files/get-file-metadata.md) - [List files](https://docs.cula.tech/api-reference/files/list-files.md) - [Upload a file](https://docs.cula.tech/api-reference/files/upload-a-file.md): Upload a file via multipart form data. The file is streamed through the Cula backend to storage. The uploaded file can later be linked to runtime resources using `link-files` or by including its ID in `file_ids` on create/update. - [Create an incoming delivery](https://docs.cula.tech/api-reference/incoming-deliveries/create-an-incoming-delivery.md): Record a material delivery arriving at a site. Each delivery has at least one leg, from sender to receiver, and optional payload containers carrying the delivered material. - [Delete an incoming delivery](https://docs.cula.tech/api-reference/incoming-deliveries/delete-an-incoming-delivery.md): Soft delete. The resource is excluded from calculations but retained in the audit trail. - [Get an incoming delivery](https://docs.cula.tech/api-reference/incoming-deliveries/get-an-incoming-delivery.md) - [Link files](https://docs.cula.tech/api-reference/incoming-deliveries/link-files.md) - [List incoming deliveries](https://docs.cula.tech/api-reference/incoming-deliveries/list-incoming-deliveries.md) - [Partially update an incoming delivery](https://docs.cula.tech/api-reference/incoming-deliveries/partially-update-an-incoming-delivery.md): Only fields present in the body are updated. - [Replace an incoming delivery](https://docs.cula.tech/api-reference/incoming-deliveries/replace-an-incoming-delivery.md): Full replacement. All fields must be provided. Returns `409` if the resource is part of a finalized submission. - [Unlink files](https://docs.cula.tech/api-reference/incoming-deliveries/unlink-files.md) - [Update a single data point](https://docs.cula.tech/api-reference/incoming-deliveries/update-a-single-data-point.md): Update one data point on an incoming delivery by its data point config ID. - [Upload and link a file](https://docs.cula.tech/api-reference/incoming-deliveries/upload-and-link-a-file.md) - [Get a specific config version](https://docs.cula.tech/api-reference/incoming-delivery-configs/get-a-specific-config-version.md): Retrieve a specific published version of an incoming delivery config. The response includes the full data point configs, payload config, and selectable transport emission log configs inline. - [Get an incoming delivery config](https://docs.cula.tech/api-reference/incoming-delivery-configs/get-an-incoming-delivery-config.md) - [List incoming delivery configs](https://docs.cula.tech/api-reference/incoming-delivery-configs/list-incoming-delivery-configs.md): List all incoming delivery configs visible to your API key scope. Configs define the expected data shape for incoming deliveries. - [List versions of an incoming delivery config](https://docs.cula.tech/api-reference/incoming-delivery-configs/list-versions-of-an-incoming-delivery-config.md): Lists all published versions. Draft versions are not exposed. - [Get a machine data point config](https://docs.cula.tech/api-reference/machine-data-point-configs/get-a-machine-data-point-config.md) - [List machine data point configs](https://docs.cula.tech/api-reference/machine-data-point-configs/list-machine-data-point-configs.md): List all machine data point configurations visible to your API key scope. Each config describes an individual data point that a machine can produce (e.g. a temperature sensor, a flow meter). - [Get import job status](https://docs.cula.tech/api-reference/machine-data/get-import-job-status.md): Poll the status of an asynchronous machine data import job. The job transitions through `accepted` → `processing` → `finished` or `failed`. - [Ingest machine data (asynchronous import)](https://docs.cula.tech/api-reference/machine-data/ingest-machine-data-asynchronous-import.md): Submit a large batch of machine data items for asynchronous processing. Returns `202` with an import job that can be polled for status. Use this endpoint when ingesting more than 200 items. - [Ingest machine data (synchronous batch)](https://docs.cula.tech/api-reference/machine-data/ingest-machine-data-synchronous-batch.md): Synchronously ingest a batch of up to 200 machine data items. All items are validated and written atomically. Returns `201` with an empty body on success. - [Get a machine](https://docs.cula.tech/api-reference/machines/get-a-machine.md) - [List machines](https://docs.cula.tech/api-reference/machines/list-machines.md): List all machines visible to your API key scope. Machines are registered at a site and managed through the Cula platform. - [Get a material application config](https://docs.cula.tech/api-reference/material-application-configs/get-a-material-application-config.md) - [Get a specific config version](https://docs.cula.tech/api-reference/material-application-configs/get-a-specific-config-version.md): Retrieve a specific published version of a material application config. The response includes the full data point configs and input container config inline. - [List material application configs](https://docs.cula.tech/api-reference/material-application-configs/list-material-application-configs.md): List all material application configs visible to your API key scope. Configs define the expected data shape for material application step executions. - [List versions of a material application config](https://docs.cula.tech/api-reference/material-application-configs/list-versions-of-a-material-application-config.md): Lists all published versions. Draft versions are not exposed. - [Create a material application step](https://docs.cula.tech/api-reference/material-application/create-a-material-application-step.md): Record an end-use application of material, such as CO2 geological injection at a well site. Material application steps consume input material containers. - [Delete a material application step](https://docs.cula.tech/api-reference/material-application/delete-a-material-application-step.md) - [Get a material application step](https://docs.cula.tech/api-reference/material-application/get-a-material-application-step.md) - [Link files](https://docs.cula.tech/api-reference/material-application/link-files.md) - [List material application steps](https://docs.cula.tech/api-reference/material-application/list-material-application-steps.md) - [Partially update a material application step](https://docs.cula.tech/api-reference/material-application/partially-update-a-material-application-step.md): Only fields present in the body are updated. - [Replace a material application step](https://docs.cula.tech/api-reference/material-application/replace-a-material-application-step.md) - [Unlink files](https://docs.cula.tech/api-reference/material-application/unlink-files.md) - [Update a single data point](https://docs.cula.tech/api-reference/material-application/update-a-single-data-point.md) - [Upload and link a file](https://docs.cula.tech/api-reference/material-application/upload-and-link-a-file.md) - [Get a material processing config](https://docs.cula.tech/api-reference/material-processing-configs/get-a-material-processing-config.md) - [Get a specific config version](https://docs.cula.tech/api-reference/material-processing-configs/get-a-specific-config-version.md): Retrieve a specific published version of a material processing config. The response includes the full data point configs and input/output container configs inline. - [List material processing configs](https://docs.cula.tech/api-reference/material-processing-configs/list-material-processing-configs.md): List all material processing configs visible to your API key scope. Configs define the expected data shape for material processing step executions. - [List versions of a material processing config](https://docs.cula.tech/api-reference/material-processing-configs/list-versions-of-a-material-processing-config.md): Lists all published versions. Draft versions are not exposed. - [Create a material processing step](https://docs.cula.tech/api-reference/material-processing/create-a-material-processing-step.md): Record a transformation step with input and output material containers (e.g. biomass processing producing liquefied CO2 and ethanol). - [Delete a material processing step](https://docs.cula.tech/api-reference/material-processing/delete-a-material-processing-step.md) - [Get a material processing step](https://docs.cula.tech/api-reference/material-processing/get-a-material-processing-step.md) - [Link files](https://docs.cula.tech/api-reference/material-processing/link-files.md): Link existing files to this material processing step. - [List material processing steps](https://docs.cula.tech/api-reference/material-processing/list-material-processing-steps.md) - [Partially update a material processing step](https://docs.cula.tech/api-reference/material-processing/partially-update-a-material-processing-step.md): Only fields present in the body are updated. - [Replace a material processing step](https://docs.cula.tech/api-reference/material-processing/replace-a-material-processing-step.md) - [Unlink files](https://docs.cula.tech/api-reference/material-processing/unlink-files.md): Remove file links from this material processing step. - [Update a single data point](https://docs.cula.tech/api-reference/material-processing/update-a-single-data-point.md) - [Upload and link a file](https://docs.cula.tech/api-reference/material-processing/upload-and-link-a-file.md): Upload a file and automatically link it to this material processing step. - [Get a material sourcing config](https://docs.cula.tech/api-reference/material-sourcing-configs/get-a-material-sourcing-config.md) - [Get a specific config version](https://docs.cula.tech/api-reference/material-sourcing-configs/get-a-specific-config-version.md): Retrieve a specific published version of a material sourcing config. The response includes the full data point configs and output container config inline. - [List material sourcing configs](https://docs.cula.tech/api-reference/material-sourcing-configs/list-material-sourcing-configs.md): List all material sourcing configs visible to your API key scope. Configs define the expected data shape for material sourcing step executions. - [List versions of a material sourcing config](https://docs.cula.tech/api-reference/material-sourcing-configs/list-versions-of-a-material-sourcing-config.md): Lists all published versions. Draft versions are not exposed. - [Create a material sourcing step](https://docs.cula.tech/api-reference/material-sourcing/create-a-material-sourcing-step.md): Record a raw material sourcing event (e.g. corn harvest, woodchip procurement). The server creates an output material container from the provided data points and computes its contents. - [Delete a material sourcing step](https://docs.cula.tech/api-reference/material-sourcing/delete-a-material-sourcing-step.md): Soft delete. The resource is excluded from calculations but retained in the audit trail. Returns `409` if the resource is part of a finalized submission. - [Get a material sourcing step](https://docs.cula.tech/api-reference/material-sourcing/get-a-material-sourcing-step.md) - [Link files](https://docs.cula.tech/api-reference/material-sourcing/link-files.md): Link existing files to this material sourcing step. - [List material sourcing steps](https://docs.cula.tech/api-reference/material-sourcing/list-material-sourcing-steps.md) - [Partially update a material sourcing step](https://docs.cula.tech/api-reference/material-sourcing/partially-update-a-material-sourcing-step.md): Only fields present in the body are updated. - [Replace a material sourcing step](https://docs.cula.tech/api-reference/material-sourcing/replace-a-material-sourcing-step.md): Full replacement of a material sourcing step. All fields must be provided. Returns `409` if the resource is part of a finalized submission. - [Unlink files](https://docs.cula.tech/api-reference/material-sourcing/unlink-files.md): Remove file links from this material sourcing step. - [Update a single data point](https://docs.cula.tech/api-reference/material-sourcing/update-a-single-data-point.md): Update one data point on a material sourcing step by its data point config ID. - [Upload and link a file](https://docs.cula.tech/api-reference/material-sourcing/upload-and-link-a-file.md): Upload a file and automatically link it to this material sourcing step. - [Get a material](https://docs.cula.tech/api-reference/materials/get-a-material.md) - [List materials](https://docs.cula.tech/api-reference/materials/list-materials.md): List the material catalog. Materials are referenced in data points (via MATERIAL_ID type) and appear in computed material container contents. Materials are managed through the Cula platform UI and are read-only in the API. - [Get a measurement](https://docs.cula.tech/api-reference/measurements/get-a-measurement.md) - [List measurements](https://docs.cula.tech/api-reference/measurements/list-measurements.md): List all measurements visible to your API key scope. Measurements group machine data points within a machine. - [MQTT streaming](https://docs.cula.tech/api-reference/mqtt-streaming.md): Real-time machine data ingestion over MQTT - [Create a counterparty organisation](https://docs.cula.tech/api-reference/organisations/create-a-counterparty-organisation.md): Create a counterparty organisation, such as a supplier company. Counterparty organisations can be associated with counterparty sites. - [Get an organisation](https://docs.cula.tech/api-reference/organisations/get-an-organisation.md) - [List organisations](https://docs.cula.tech/api-reference/organisations/list-organisations.md) - [Create an outgoing delivery](https://docs.cula.tech/api-reference/outgoing-deliveries/create-an-outgoing-delivery.md): Record a material delivery leaving a site, such as a CO2 shipment to an injection well or ethanol delivery to a customer. - [Delete an outgoing delivery](https://docs.cula.tech/api-reference/outgoing-deliveries/delete-an-outgoing-delivery.md) - [Get an outgoing delivery](https://docs.cula.tech/api-reference/outgoing-deliveries/get-an-outgoing-delivery.md) - [Link files](https://docs.cula.tech/api-reference/outgoing-deliveries/link-files.md) - [List outgoing deliveries](https://docs.cula.tech/api-reference/outgoing-deliveries/list-outgoing-deliveries.md) - [Partially update an outgoing delivery](https://docs.cula.tech/api-reference/outgoing-deliveries/partially-update-an-outgoing-delivery.md): Only fields present in the body are updated. - [Replace an outgoing delivery](https://docs.cula.tech/api-reference/outgoing-deliveries/replace-an-outgoing-delivery.md) - [Unlink files](https://docs.cula.tech/api-reference/outgoing-deliveries/unlink-files.md) - [Update a single data point](https://docs.cula.tech/api-reference/outgoing-deliveries/update-a-single-data-point.md) - [Upload and link a file](https://docs.cula.tech/api-reference/outgoing-deliveries/upload-and-link-a-file.md) - [Get a specific config version](https://docs.cula.tech/api-reference/outgoing-delivery-configs/get-a-specific-config-version.md): Retrieve a specific published version of an outgoing delivery config. The response includes the full data point configs, payload config, and selectable transport emission log configs inline. - [Get an outgoing delivery config](https://docs.cula.tech/api-reference/outgoing-delivery-configs/get-an-outgoing-delivery-config.md) - [List outgoing delivery configs](https://docs.cula.tech/api-reference/outgoing-delivery-configs/list-outgoing-delivery-configs.md): List all outgoing delivery configs visible to your API key scope. Configs define the expected data shape for outgoing deliveries. - [List versions of an outgoing delivery config](https://docs.cula.tech/api-reference/outgoing-delivery-configs/list-versions-of-an-outgoing-delivery-config.md): Lists all published versions. Draft versions are not exposed. - [Get a periodic emission log config](https://docs.cula.tech/api-reference/periodic-emission-log-configs/get-a-periodic-emission-log-config.md) - [Get a specific config version](https://docs.cula.tech/api-reference/periodic-emission-log-configs/get-a-specific-config-version.md): Retrieve a specific published version of a periodic emission log config. The response includes the full data point configs and linked step configs inline. - [List periodic emission log configs](https://docs.cula.tech/api-reference/periodic-emission-log-configs/list-periodic-emission-log-configs.md): List all periodic emission log configs visible to your API key scope. Configs define the expected data shape for periodic emission logs. - [List versions of a periodic emission log config](https://docs.cula.tech/api-reference/periodic-emission-log-configs/list-versions-of-a-periodic-emission-log-config.md): Lists all published versions. Draft versions are not exposed. - [Create a periodic emission log](https://docs.cula.tech/api-reference/periodic-emission-logs/create-a-periodic-emission-log.md): Record emission measurements for a defined period, such as monthly electricity consumption, natural gas usage, or REC retirements. The server starts a background emission calculation. The initial response returns `status: "calculating"` with `emissions_in_kg_co2e: null`. Subscribe to the `periodic_e… - [Delete a periodic emission log](https://docs.cula.tech/api-reference/periodic-emission-logs/delete-a-periodic-emission-log.md): Soft delete. The resource is excluded from calculations but retained in the audit trail. - [Get a periodic emission log](https://docs.cula.tech/api-reference/periodic-emission-logs/get-a-periodic-emission-log.md): Retrieve a single periodic emission log. If `status` is `completed`, the `emissions_in_kg_co2e` field contains the calculated result. - [Link files](https://docs.cula.tech/api-reference/periodic-emission-logs/link-files.md) - [List periodic emission logs](https://docs.cula.tech/api-reference/periodic-emission-logs/list-periodic-emission-logs.md) - [Partially update a periodic emission log](https://docs.cula.tech/api-reference/periodic-emission-logs/partially-update-a-periodic-emission-log.md): Only fields present in the body are updated. Triggers a recalculation. - [Replace a periodic emission log](https://docs.cula.tech/api-reference/periodic-emission-logs/replace-a-periodic-emission-log.md): Full replacement. Triggers a recalculation. Returns `409` if the resource is part of a finalized submission. - [Unlink files](https://docs.cula.tech/api-reference/periodic-emission-logs/unlink-files.md) - [Update a single data point](https://docs.cula.tech/api-reference/periodic-emission-logs/update-a-single-data-point.md): Update one data point on a periodic emission log. Triggers a recalculation. - [Upload and link a file](https://docs.cula.tech/api-reference/periodic-emission-logs/upload-and-link-a-file.md) - [Create a counterparty site](https://docs.cula.tech/api-reference/sites/create-a-counterparty-site.md): Create a counterparty site, such as a supplier farm or customer facility. Counterparty sites can be used as senders or receivers in delivery legs. - [Get a site](https://docs.cula.tech/api-reference/sites/get-a-site.md): Retrieve a site by Cula-assigned ID or `ext-{externalId}`. The response includes timezone, location, and organisation. - [List sites](https://docs.cula.tech/api-reference/sites/list-sites.md): List all sites visible to your API key scope. Includes both registered (Cula-managed) sites and unregistered counterparty sites. - [Update a counterparty site](https://docs.cula.tech/api-reference/sites/update-a-counterparty-site.md): Partially update a counterparty site. Only `name` and `external_id` can be updated. - [Create a webhook subscription](https://docs.cula.tech/api-reference/webhooks/create-a-webhook-subscription.md): Subscribe to tracking events. Cula sends HTTP POST callbacks to your registered URL when resources are created, updated, or deleted. The response includes a `secret` for verifying webhook signatures (HMAC-SHA256). The secret is only returned on creation. - [Delete a webhook subscription](https://docs.cula.tech/api-reference/webhooks/delete-a-webhook-subscription.md) - [Get a webhook subscription](https://docs.cula.tech/api-reference/webhooks/get-a-webhook-subscription.md) - [List webhook subscriptions](https://docs.cula.tech/api-reference/webhooks/list-webhook-subscriptions.md) - [Receive a tracking event](https://docs.cula.tech/api-reference/webhooks/receive-a-tracking-event.md): HTTP POST request sent to your registered webhook URL when a tracking event occurs. Verify the signature using the `Cula-Signature` header and your webhook secret (HMAC-SHA256). - [Data points](https://docs.cula.tech/concepts/data-points.md): How configurable data fields work across the tracking API - [Resource identity](https://docs.cula.tech/concepts/resource-identity.md): How resources are identified and cross-referenced - [Runtime and config layer](https://docs.cula.tech/concepts/runtime-and-config.md): How configs define the shape of runtime tracking data - [Quickstart](https://docs.cula.tech/guides/quickstart.md): Create your first tracking resource in under 5 minutes - [Introduction](https://docs.cula.tech/introduction.md): Programmatic access to the Cula platform - [Authentication](https://docs.cula.tech/technical-reference/authentication.md): API key authentication and scoping - [Error handling](https://docs.cula.tech/technical-reference/error-handling.md): Error model, status codes, and conflict handling - [Pagination and filtering](https://docs.cula.tech/technical-reference/pagination-and-filtering.md): Cursor-based pagination for list endpoints ## OpenAPI Specs - [openapi](https://docs.cula.tech/openapi.yaml)