Skip to main content
POST
/
sites
Create a site
curl --request POST \
  --url https://api.demo.cula.earth/tracking/v1/sites \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Cula-Organisation-Id: <cula-organisation-id>' \
  --data '
{
  "external_id": "GC-VND-ACKJAM",
  "name": "Ackerman Farms (James)",
  "address": {
    "street": "123 Farm Road",
    "city": "Dickinson",
    "postcode": "58601",
    "country": "United States",
    "country_code": "US"
  },
  "managed_by_site": {
    "external_id": "GC-SITE-REFINERY"
  },
  "organisation": {
    "external_id": "GC-ORG-ACKJAM"
  }
}
'
{
  "id": "ste_01kqzcjrpyf27tge7875y20mmr",
  "external_id": "GC-VND-ACKJAM",
  "name": "Ackerman Farms (James)",
  "timezone": "America/Chicago",
  "coordinates": {
    "lat": 46.8792,
    "long": -102.7896
  },
  "address": {
    "street": "123 Farm Road",
    "city": "Dickinson",
    "postcode": "58601",
    "country": "United States",
    "country_code": "US"
  },
  "managed_by_site": {
    "id": "ste_01kqzcjrpyf27tge6smsbnhkh5",
    "external_id": "GC-SITE-REFINERY"
  },
  "organisation": {
    "id": "org_01kqzcjrpyf27tge8c161z0b8h",
    "external_id": "GC-ORG-ACKJAM"
  }
}

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

application/json

Create a site, such as a supplier farm or customer facility. Provide at least one of coordinates or address. When address is provided, the server geocodes it and persists the resolved coordinates and canonical address. When both are provided, they must agree.

name
string
required
Example:

"Ackerman Farms (James)"

coordinates
object
required

Latitude/longitude of the site. Provide at least one of coordinates or address.

managed_by_site
object
required

The site managing this record. Must be a site within your API key's scope.

Example:
{ "id": "ste_01kqzcjrpyf27tge6smsbnhkh5" }
organisation
object
required

The organisation this site is grouped under.

Example:
{ "id": "ste_01kqzcjrpyf27tge6smsbnhkh5" }
external_id
string

Partner-assigned identifier. Must be unique within the organisation.

address
object

Postal address of the site. Provide at least one of coordinates or address. The address is geocoded before saving.

Response

Site created.

id
string
required
Example:

"ste_01kqzcjrpyf27tge6smsbnhkh5"

name
string
required
Example:

"GreenCarbon Refinery"

coordinates
object
required

Latitude/longitude coordinates of the site.

external_id
string | null
timezone
string | null

IANA timezone identifier. Sites with managed_by_site inherit the managing site's timezone when not explicitly set.

Example:

"America/Chicago"

address
object

Postal address of the site, if known.

managed_by_site
object

The site that manages this site record. Null for sites not created via the API.

organisation
object

The organisation that owns or operates this site.