Skip to main content

API fundamentals

How the GroWrk API behaves.

A JSON-over-HTTPS API for operations that finish in the physical world. These are the conventions to design your integration around.

Requests

Requests are standard HTTPS calls with JSON bodies. Reads use GET, operations that start work use POST. Every request carries your API key and, for bodies, a JSON content type.

POST /v4/orders
curl https://ai.growrk.com/v4/orders \
  -X POST \
  -H "X-API-KEY: $GROWRK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "deployment",
    "employee_id": "emp_23981",
    "country": "SG"
  }'
  • A 2xx on an operational endpoint means the operation was accepted, not that it is finished.
  • Timestamps are UTC in ISO 8601 form.
  • Unknown fields should be ignored by your client so additive changes never break you.

Responses

Single-object responses return the resource. List endpoints return a data array. Store the returned identifier — it is how every later event is correlated back to the operation you started.

200 OK
{
  "id": "ord_78219",
  "type": "deployment",
  "status": "processing",
  "employee_id": "emp_23981",
  "country": "SG",
  "created_at": "2026-08-26T16:42:11Z"
}

Example payloads are illustrative. Refer to your production API specification for finalized fields and schemas.

Errors

Errors return a non-2xx status with a structured body. The request_id is the value to quote when contacting GroWrk support about a specific call.

Error response
{
  "error": {
    "type": "validation_error",
    "message": "The request could not be processed.",
    "request_id": "req_82HD91"
  }
}

This error shape is illustrative and may differ from the production implementation for your partner configuration.

Error categories

CategoryWhat it means
AuthenticationThe credential is missing, malformed, or no longer valid.
AuthorizationThe credential is valid but not scoped to this operation or tenant.
ValidationThe request was understood but a field is missing, malformed, or unsupported.
Resource not foundThe referenced employee, device, or order does not exist for this account.
ConflictThe operation contradicts current state — for example, retrieving a device already collected.
Rate limitingToo many requests in a window. Back off and retry.
Server / operationalGroWrk could not process the request. Retry safely rather than duplicating the operation.

Idempotency

Physical operations are expensive to duplicate. A retried deployment must not become two laptops shipped to the same person, and a retried retrieval must not dispatch two couriers.

  • Treat every operational POST as something that must be safe to retry after a timeout or network failure.
  • Keep a stable client-side key for each operation you initiate, derived from your own record — for example the hire or ticket ID.
  • Before retrying, re-read the resource: if the operation already exists, reconcile instead of creating a second one.
  • Never retry blindly in a loop; back off and surface the failure to your own operations team if it persists.

The exact retry-safety mechanism — including whether a dedicated idempotency header is used — is confirmed with your team during onboarding, because it depends on partner configuration.

Pagination

List endpoints return results in pages rather than the entire collection. A response indicates whether more results exist, and your client requests the next page until it does not.

List response
{
  "data": [
    { "id": "dev_90441", "status": "available" },
    { "id": "dev_90442", "status": "available" }
  ],
  "has_more": true
}
  • Iterate until the response signals there are no further results, rather than assuming a fixed page count.
  • Do not rely on ordering to detect completeness; use the pagination signal.
  • For large syncs, prefer webhooks to keep state fresh and use list endpoints for reconciliation.

Parameter names and page-size limits are confirmed in the API specification issued to partners.

API versioning

The API is versioned so an integration keeps working as the platform evolves. The current version used across GroWrk tooling is v4, and it is expressed in the request path.

Base path
https://ai.growrk.com/v4
  • Additive changes — new fields, new event types — can ship within a version, so clients must tolerate unknown fields.
  • Changes that would break an existing integration belong to a new version.
  • Pin to the version you built against and migrate deliberately.

Ready to build against the GroWrk lifecycle?

Sandbox credentials are issued by the GroWrk team after a short integration review.