Field naming
snake_case everywhere — both request body fields and response shapes.
Dates & timestamps
All timestamps are ISO 8601 with the source event’s original UTC offset preserved — never normalized toZ (UTC) or any single fixed zone.
- Korean auction events serialize as
+09:00(KST). - Destination-side logistics events (e.g., Lagos customs arrival) serialize in the event’s local offset —
+01:00for WAT, etc. - Bare UTC
Zis not acceptable in partner-submitted fields — always include the actual offset of the event location.
Money
- All amounts are USD integers (whole dollars, not cents).
nullfor unset amounts (e.g.,purchase_price_usdis null until the order reachessecured).- Partner handles NGN (or other local currency) conversion; LMN does not surface non-USD prices.
IDs
Bare IDs (e.g.,01HXYZ...). No prefixes like ord_ or veh_. Order IDs are ULIDs (26 chars). Vehicle IDs follow the source’s native format.
Pagination
Cursor-based. A cursor is opaque: most lists encode a composite(sort_field, id) position, while dealer vehicles with a non-price sort encode an upstream page number plus the IDs of the most recent 512 listings already returned or skipped as duplicates (see Price-sorted pagination):
next_cursorisnullon the last page.- Cursors are sort-specific — restart from page 1 whenever you change
sortor any filter. Orders and invoices reject a cursor reused with a differentsortwith400 invalid_cursor; Eagle Eye matches reject it with400 validation_error(details.field: "cursor");/v1/vehiclescan return400 validation_erroroncursorfor incompatible price sorts or a taxonomy version change. Its legacy page-number cursors may instead silently apply page N to the changed result set (see Missing dealer listings → T5). - Default page size is 50 (vehicles, orders); max 200.
limit> max returns400 validation_error.
Nullable fields
Always explicitnull, never omitted. Clients should treat missing fields as schema bugs.
HTTP methods & status codes
Operational boundary
Versioning
/v1/ is the major-version prefix. Breaking changes increment to /v2/ with a 90-day deprecation window where both versions are served.
Every changelog entry identifies what changed:
When a version is marked “No request/response model shape changes”, it means no endpoint path, method, required request field, response object field, or field type changed.
Sandbox
Base URL:https://sandbox-api.lmnauto.com/v1/.
- Read endpoints return current auction inventory, using the same request/response contract as production.
- Orders are non-binding in sandbox and are safe for integration testing.
- Orders do not auto-advance. Use
POST /v1/orders/{id}/sandbox-statusto simulate lifecycle states and enqueue webhook events; coordinate with LMN ops when you want logs monitored during a test. - Best-effort SLAs; no production guarantees.
SDK & OpenAPI
OpenAPI 3.1 spec available atGET /v1/openapi.json. Generate clients via openapi-generator or any compatible tool.