Getting Started
Overview
The Kurir API lets you check shipping costs across many couriers, create shipping orders, track shipments, and manage your balance — all through a simple REST API.
All requests go to the https://use.api.co.id gateway and are authenticated with an API key in the x-api-co-id header. Responses are always JSON with a consistent structure.
Typical integration flow:
- Get location codes from the Districts endpoint.
- Call Shipping Rates to get a
quote_idand a list of rates. - Create an Order with the
quote_id+ the selected courier. - Receive status updates via Webhooks or Track Shipment.
COD (cash on delivery) is coming soon. For now, all rates and orders are non-COD.
Authentication
Every request must include an API key in the x-api-co-id header. Requests without a valid key are rejected with 401.
x-api-co-id: YOUR_API_KEY
API keys are created and managed in your api.co.id account dashboard. Keep your key on the server side; never put it in front-end code or public repositories.
Base URL
All endpoints use the following base URL. Combine it with each endpoint's path.
https://use.api.co.id
Example: the Shipping Rates endpoint GET /courier/v2/rates means https://use.api.co.id/courier/v2/rates.
Response Format
All responses share a consistent JSON envelope:
{
"is_success": true,
"message": "OK",
"data": { ... },
"paging": { "page": 1, "per_page": 20, "total": 42 }
}
is_success—trueif the request succeeded,falseon error.message— a short message in Indonesian.data— the main payload (object or array),nullon error.paging— only present on paginated endpoints (e.g. list orders).
On error, check the HTTP status code and message. See Error Codes.
Pricing & Fees
- Shipping Rates (
GET /courier/v2/rates) costs Rp 5 per successful call. /courier/v1/*endpoints (couriers, locations, addresses, tracking, balance) are free.- The shipping cost is deducted from your balance when an Order is created, not when checking rates.
Rate-check fees and order shipping costs are deducted from your account balance. If your balance is insufficient, the endpoint returns 402. Check your balance via the Balance endpoint.