Partner API v1
Rocket Car Rentals Vietnam — Partner API
Live, and waiting for your credentials
401 — access is controlled by the client we issue you and the scopes attached to it, not by a global switch. Your first credential carries read and shop scopes so you can authenticate, browse the fleet and take quotes immediately; the reservation scopes are granted after a joint certification call. See Onboarding.Fleet
All 36 vehicles with doors, A/C, max passengers and SIPP codes.
Locations
10 active location codes across 5 cities, with IATA mapping.
Rates & accounts
What an account code and a rate code mean, and which one to integrate against.
API reference
Every endpoint, scope and error code.
Quick start
Authentication is OAuth 2.0 client credentials. Note that the token endpoint is form-encoded, as the OAuth specification requires; every other endpoint takes and returns JSON.
# 1. Exchange your credentials for a token (form-encoded, per OAuth 2.0)
curl -X POST https://rocketcarrentalsvietnam.com/api/partner/v1/oauth/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&client_id=...&client_secret=...'
# 2. Use it on every other call
curl https://rocketcarrentalsvietnam.com/api/partner/v1/fleet \
-H 'Authorization: Bearer <access_token>'Tokens last 10 minutes. Cache and reuse one rather than minting per request — the token endpoint is rate limited. There is no refresh token: you already hold credentials, so you re-authenticate.
Two things to know before you design against it
- Availability is at the vehicle-model level, not the individual-car level. Rocket offers a model in a city and holds no specific registration plate until pickup. If your platform requires a decrementing count of physical units, tell us now — that is a change to how Rocket runs its fleet, not an API option.
- Reservations cannot be modified.
PATCH /reservations/{id}deliberately answers501. Cancel and re-book. We would rather refuse than pretend to support a partial amendment we cannot apply consistently.
Conventions that apply everywhere
- Money is never a bare number. Every amount is an object with an integer in minor units:
{ "currency": "USD", "amount": 43000, "exponent": 2, "display": "$430.00" }. - Errors share one envelope —
{ "error": { "code", "message", "requestId", "retryable" } }. Switch oncode, never onmessage. QuoterequestIdto support and we can find the exact call. - Booking writes require an
Idempotency-Keyheader. Retrying with the same key returns the same reservation instead of creating a second one. - The version is in the path. A breaking change gets a new path, never a silent edit to this one.
The machine-readable contract
Generate your client from the OpenAPI 3.1 schema rather than from this prose. It is validated in Rocket's CI against the implementation — every documented path must exist in the router and every route must be documented, in both directions, so this documentation cannot quietly drift from the running API.