validation_error | 400 | Request 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_key | 400 | Idempotency-Key header absent on POST. | Any POST or DELETE without header. | Add UUID v4 header, retry. |
invalid_cursor | 400 | Cursor invalid, expired, or sort-mismatched. | Resending a cursor after changing sort=. | Restart pagination from page 1 with the desired sort. |
missing_max_bid | 400 | Auction 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_key | 401 | x-api-key header absent. | Any request without header. | Add the header. |
invalid_api_key | 401 | Key not recognized, revoked, or wrong env. | Sandbox key against production URL, or revoked key. | Verify env (sandbox vs production); rotate if compromised. |
ip_not_allowed | 403 | Source IP not in allowlist. | Egress IP missing from per-env allowlist. | Email integrations@lmnauto.com to add IP. Check egress NAT stability. |
invalid_status_transition | 403 / 409 | Requested transition not permitted. | 403: partner attempting LMN-owned fulfillment_detail. 409: delivered from non-shipping, or DELETE from non-proceed. | Re-fetch GET /v1/orders/{id} to see current state. Only use partner-permitted transitions. |
vehicle_not_found | 404 | Unknown vehicle ID. | Stale or wrong-env ID. | Refresh the listing; confirm correct base URL. |
order_not_found | 404 | Unknown order ID for this key. | Wrong env, cross-key ID, or deleted. | Confirm correct base URL; the ID belongs to your account. |
past_order_cutoff | 409 | POST after the auction’s cutoff. | auction_date - 1 day, midnight KST already passed. | Inform dealer that the order window is closed. |
duplicate_order | 409 | Active 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_reused | 422 | Same 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_unavailable | 410 | Vehicle no longer available. | Dealer or buy-now listing disappeared. | Move order to cancelled in UI; notify dealer. |
rate_limited | 429 | Per-key rate limit exceeded. | Burst exceeded sliding-window bucket. | Respect Retry-After header; client-side exponential backoff. |
internal_error | 500 | Server-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. |