Returns paginated orders belonging to the authenticated organization.
Scope: orders:read
| Query | Type | Description |
|---|---|---|
per_page | integer | 1–100, default 25. |
Developers
Server-to-server JSON API for professional customers and transport providers.
Production base URL
Requests and responses use JSON unless otherwise specified. Send Accept: application/json and, for POST requests, Content-Type: application/json.
API credentials are created in the Business or Provider automation area. Tokens begin with nk_, are shown once, hashed at rest and may be revoked or rotated.
| Surface | Scopes currently used by routes | Reserved/account scopes |
|---|---|---|
| Business | orders:create, orders:read | drivers:read, tracking:read |
| Provider | requests:read, requests:write, tours:read, drivers:read, drivers:write, tracking:write, proofs:write | tracking:read |
API v1 is limited to 120 requests per minute per bearer token by default. The deployment may change this value through configuration. A rate-limited request returns HTTP 429.
api integration feature. The base professional plan remains manual and cannot create orders through this API.All Business endpoints are scoped to the organization attached to the credential. A credential can never read another organization’s order.
Returns paginated orders belonging to the authenticated organization.
Scope: orders:read
| Query | Type | Description |
|---|---|---|
per_page | integer | 1–100, default 25. |
Returns one organization order with its service category and chosen provider. Returns 404 if the order does not belong to the authenticated organization.
Scope: orders:read
Creates a service request for the authenticated professional organization.
Scope: orders:create
| Field | Required | Rules |
|---|---|---|
territory | yes | string, max 255 |
transport_type | yes | string, max 100 |
pickup_location | yes | string, max 1000 |
delivery_location | yes | string, max 1000 |
pickup_contact_name | no | string, max 255 |
pickup_contact_phone | no | string, max 100 |
delivery_contact_name | yes | string, max 255 |
delivery_contact_phone | yes | string, max 100 |
description | no | string, max 5000 |
is_urgent | no | boolean |
scheduled_at | no | date / ISO-8601 recommended |
organization_driver_id | no | must belong to the authenticated organization |
Success: HTTP 201. Creating an order emits the Business webhook event order.created when the subscription and endpoint configuration allow webhooks.
The Provider API is bidirectional. A TMS can read assigned work, synchronize drivers and report operational actions back to Noukarivé without bypassing the same lifecycle, proof, customer validation and financial-release rules used by the Provider portal.
Idempotency-Key header. Reusing the same key with the same request replays the original response; reusing it with a different payload returns HTTP 409.Lists service requests assigned to the authenticated provider.
Scope: requests:read
Optional query parameters: status, per_page (1–100, default 25).
Returns one assigned request including category, driver, payment, shipment and delivery proofs. Requests assigned to another provider return 404.
Scope: requests:read
Returns provider tour occurrences, including vehicle and stops.
Scope: tours:read
| Method | Path | Scope | Purpose |
|---|---|---|---|
| POST | /provider/requests/{id}/accept | requests:write | Accept the mission and trigger the normal Noukarivé acceptance lifecycle. |
| POST | /provider/requests/{id}/reject | requests:write | Reject an unstarted mission and return it to pending allocation. |
| POST | /provider/requests/{id}/pickup | requests:write | Confirm physical pickup. Optional occurred_at. |
| POST | /provider/requests/{id}/delivery | requests:write | Confirm physical delivery. Customer validation remains independent. |
| POST | /provider/requests/{id}/complete | requests:write | Mark carrier-side completion and refresh financial release eligibility. |
| PATCH | /provider/requests/{id}/status | tracking:write | Normalize common TMS states without exposing raw database status mutation. |
PATCH /provider/requests/{id}/status accepts the normalized statuses picked_up, in_progress, out_for_delivery, arrived, delivery_attempted, delivered and completed. Terminal actions are routed through the same pickup/delivery/completion services instead of directly changing the request status field.
POST /provider/requests/{id}/events accepts safe timeline events departed, arrived, out_for_delivery, delivery_attempted and note, with optional timestamp, title, description, location and visibility.
Lists drivers owned by the authenticated provider.
Scope: drivers:read
Upserts up to 500 TMS drivers using a stable external_id and source (for example onfleet).
Scope: drivers:write
Assigns or unassigns an active provider driver by Noukarivé ID or by external_driver_id + external_source.
Scope: requests:write
Uploads a pickup/delivery/other proof as multipart form data. Maximum file size: 10 MB.
Scope: proofs:write
Fields: proof_stage, type, proof_file, optional notes.
| HTTP | Meaning |
|---|---|
| 401 | Missing, invalid or expired bearer credential. |
| 403 | Credential lacks the requested scope, or the account subscription does not include API access. |
| 404 | Resource not found inside the authenticated account boundary. |
| 422 | Laravel validation error. The response includes a field-level errors object when JSON is requested. |
| 429 | Rate limit exceeded. |
Provider writes: Idempotency-Key is mandatory (8–255 characters). Successful non-5xx responses are retained for 30 days. Retry the exact same operation with the exact same key after a timeout.
A replay returns Idempotency-Replayed: true. Reusing the same key with a different method/path/payload returns HTTP 409.
POST /business/orders still does not provide the same contractual replay guarantee. Do not blindly retry an ambiguous Business order creation timeout.