Skip to main content
Every Jinko endpoint returns errors as JSON in a consistent envelope:
The SDK converts these to ApiError (or its subclasses AuthError / ValidationError), see SDK error handling.

Status code reference

Reporting issues

Every response includes an X-Request-ID header (also visible in SDK logs as X-Request-ID). Capture it and include in any bug report, we use it to find the exact request server-side in Datadog.
Email: dev@gojinko.com.

Common gotchas

”All my prices are 100× too high”

A 159.77farerenderingas159.77 fare rendering as 15,977. Monetary amounts come back in minor units: { "value": 15977, "currency": "USD", "decimal_places": 2 }. Divide by 10 ** decimal_places before displaying — see Money & prices. The mirror symptom, prices 100× too small, is usually a hardcoded / 100 applied to a zero-decimal currency such as JPY or KRW.

”I get 401 on the MCP endpoint with a token that worked yesterday”

If the token came from jinko auth login, it’s a CLI OAuth token (issuer = Jinko Auth user pool). MCP expects either an API key or an MCP-OAuth JWT (issuer = AuthKit). They look similar but trip the issuer check. Use jnk_* for programmatic MCP access.

”Trip says ‘fulfilled’ but I never got a confirmation”

Confirmation emails go via Resend. If the user’s email is correct on the trip’s contact and the booking status is completed, check spam. If the status is stuck on fulfilling for more than ~6 hours, the upstream provider is slow, common on TravelFusion when the airline is laggy.

”trip_item_token rejected with ‘expired’”

trip_item_tokens have a TTL (~30 minutes for flights, shorter for some hotel rates). If the user takes a long time on traveler entry, re-run live pricing (flight_search / hotel_search) before adding to a trip.