Skip to main content

Error response shape

All non-2xx responses share this envelope:
{
  "error": {
    "code": "past_order_cutoff",
    "message": "The order window for this auction closed at 2026-04-20T12:00:00+09:00.",
    "request_id": "req_8829374",
    "details": {
      "cutoff_at": "2026-04-20T12:00:00+09:00",
      "now": "2026-04-20T12:30:00+09:00"
    }
  }
}
Branch on error.code only. error.message is human-readable English and may evolve. details is structured supplementary info — fields vary per code. request_id is also returned as the X-Request-Id response header. Include it in any support request.

HTTP → code matrix

HTTPerror.code values
400validation_error, missing_idempotency_key, missing_max_bid, invalid_cursor, mixed_source_pagination_unsupported
401missing_api_key, invalid_api_key
403ip_not_allowed, invalid_status_transition (partner attempting LMN-owned transition)
404vehicle_not_found, order_not_found, order_vehicle_snapshot_not_found
409invalid_status_transition, past_order_cutoff, duplicate_order
410vehicle_unavailable
422idempotency_key_reused
429rate_limited
500internal_error
503dealer_upstream_unavailable

Per-code troubleshooting

CodeHTTPMeaningWhenWhat to do
validation_error400Request shape failed validation.Bad enum, missing field, model without make, ids > 100, from without to.Inspect error.details.issues[].path. Fix the request; do not retry as-is.
missing_idempotency_key400Idempotency-Key header absent on order creation.POST /v1/orders without header.Add UUID v4 header, retry.
invalid_cursor400Cursor invalid, expired, or sort-mismatched.Resending a cursor after changing sort=.Restart pagination from page 1 with the desired sort.
missing_max_bid400Auction vehicle requires max_bid_amount_usd.POST with null/omitted/below-listing bid.Add max_bid_amount_usd (integer > 0, ≥ listing). Not required for buy-now.
missing_api_key401x-api-key header absent.Any request without header.Add the header.
invalid_api_key401Key not recognized, revoked, or wrong env.Sandbox key against production URL, or revoked key.Verify env (sandbox vs production); rotate if compromised.
ip_not_allowed403Source IP not in allowlist.Egress IP missing from per-env allowlist.Email integrations@lmnauto.com to add IP. Check egress NAT stability.
invalid_status_transition403 / 409Requested transition not permitted.403 = partner attempted an LMN-owned status (inspection_in_progress, inspection_ready, acquiring, secured, export_processing, in_transit); details.reason: "partner_not_authorized". 409 = sequence violation (e.g., delivered from non-customs, DELETE from non-placed); details.reason: "out_of_sequence". details.current_status set in both cases.Re-fetch GET /v1/orders/{id} to see current state. Only use partner-permitted transitions: in_transit → customs, customs → delivered.
vehicle_not_found404Unknown or unavailable vehicle ID.Stale ID, wrong-env ID, or a dealer (encar_*) detail page whose upstream advertisement is no longer active / marked SOLD or WAIT.Refresh the listing; confirm correct base URL. For dealer cars, treat this as no longer available to buy and remove or disable the listing in your UI.
order_not_found404Unknown order ID for this key.Wrong env, cross-key ID, or deleted.Confirm correct base URL; the ID belongs to your account.
order_vehicle_snapshot_not_found404Order exists, but no purchased-vehicle snapshot is stored.GET /v1/orders/{id}/vehicle for a historical order created before snapshot storage.Use live GET /v1/vehicles/{vehicle_id} only if the listing still exists; otherwise contact LMN for manual recovery.
past_order_cutoff409POST after the auction’s cutoff.auction_date − N min (your integration’s lead time; default 1440 = 24h) already passed.Inform dealer that the order window is closed.
duplicate_order409Active order already exists for this vehicle.Repeat POST while a prior order is not terminal. details.existing_order_id references it.Redirect user to existing order page. Do not auto-retry.
idempotency_key_reused422Same Idempotency-Key with a different vehicle_id.Client-library bug reusing keys across logical requests.Inspect details.original_vehicle_id. Generate a fresh key per new order.
vehicle_unavailable410Vehicle no longer available.Dealer or buy-now listing disappeared before LMN could complete the purchase.Move order to failed in UI once the order snapshot reflects failure_reason: "vehicle_unavailable"; notify dealer.
rate_limited429Per-key rate limit exceeded.Burst exceeded sliding-window bucket.Respect Retry-After header; client-side exponential backoff.
internal_error500Server-side failure.Rare; LMN on-call is paged automatically. Body carries only a generic message — no stack traces.Retry with exponential backoff (3 tries). If persistent, share request_id with support.
mixed_source_pagination_unsupported400cursor passed with mixed auction+dealer source.Trying to paginate beyond page 1 on a query like source=glovis,dealer&cursor=….Restart pagination per source — issue separate requests with source=glovis and source=dealer. The first page of a mixed query is supported; deeper iteration is not.
dealer_upstream_unavailable503A dealer upstream (Encar or Danawa) is unreachable or returned an unexpected response shape.Transient dealer-source outage, network blip, bot-protection interstitial, or extractor drift. Mixed requests degrade gracefully with X-LMN-Partial-Dealer-Unavailable: <csv> — a comma-separated list of the dealer source names that failed (e.g. encar, danawa, or encar,danawa) — instead of this error; a pure dealer request fails with 503 only when all dealer sources are down (one source down still returns the survivor’s rows + the header).Retry after a short backoff (5–30s). If persistent (> 5 min for a single ID, > 2 min for list), include request_id and the failing dealer query in a support note — auction requests are unaffected during dealer outages.