{"openapi":"3.1.0","info":{"title":"apiauto.space","description":"Unified read-only API for Korea, China and US used-car catalogs. Authenticate with the `X-API-Key` header. Paid plans spend quota per returned record; references, usage and photos are free. Errors are `{\"error\": code}`.","version":"1.0.0"},"paths":{"/v1/cars":{"get":{"tags":["cars"],"summary":"List Cars","operationId":"list_cars_v1_cars_get","parameters":[{"name":"market","in":"query","required":true,"schema":{"enum":["kr","cn","us"],"type":"string","title":"Market"}},{"name":"brand","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"trim","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trim"}},{"name":"year_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year Min"}},{"name":"year_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year Max"}},{"name":"price_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10000000000000.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Min"}},{"name":"price_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10000000000000.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Max"}},{"name":"price_usd_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10000000000000.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Usd Min"}},{"name":"price_usd_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10000000000000.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Usd Max"}},{"name":"mileage_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100000000,"minimum":0},{"type":"null"}],"title":"Mileage Max"}},{"name":"fuel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fuel"}},{"name":"transmission","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transmission"}},{"name":"body_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Type"}},{"name":"has_photos","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Photos"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Is Active"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Up to 6 words of the title (year, brand, model, trim): words of 3+ characters match anywhere, shorter ones (k5, x5) as whole words","title":"Q"},"description":"Up to 6 words of the title (year, brand, model, trim): words of 3+ characters match anywhere, shorter ones (k5, x5) as whole words"},{"name":"sort","in":"query","required":false,"schema":{"enum":["-first_seen","first_seen","price","-price","year","-year","mileage","-mileage"],"type":"string","default":"-first_seen","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarsPage"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}},"X-Quota-Limit":{"description":"Quota of the period (records; data requests on the demo)","schema":{"type":"integer"}},"X-Quota-Remaining":{"description":"Quota left","schema":{"type":"integer"}},"X-Quota-Reset":{"description":"When the quota resets (UTC)","schema":{"type":"string","format":"date-time"}},"X-Data-Age-Seconds":{"description":"Age of the newest copy of the market","schema":{"type":"integer"}}}},"400":{"description":"`bad_request`: invalid parameter, `offset`, or a cursor that cannot be read","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"402":{"description":"`quota_exhausted`: the quota of the period is spent; `reset_at` says when it resets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"`market_not_in_plan` (with `markets`) or `feature_not_in_plan` (with `detail`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"503":{"description":"`stale_data`: the market has not been copied yet (only right after the first install); an old copy is served as is, its age is in `X-Data-Age-Seconds`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/cars/{car_id}":{"get":{"tags":["cars"],"summary":"Get Car","operationId":"get_car_v1_cars__car_id__get","parameters":[{"name":"car_id","in":"path","required":true,"schema":{"type":"string","title":"Car Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarOut"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}},"X-Quota-Limit":{"description":"Quota of the period (records; data requests on the demo)","schema":{"type":"integer"}},"X-Quota-Remaining":{"description":"Quota left","schema":{"type":"integer"}},"X-Quota-Reset":{"description":"When the quota resets (UTC)","schema":{"type":"string","format":"date-time"}},"X-Data-Age-Seconds":{"description":"Age of the newest copy of the market","schema":{"type":"integer"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"402":{"description":"`quota_exhausted`: the quota of the period is spent; `reset_at` says when it resets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"`market_not_in_plan` (with `markets`) or `feature_not_in_plan` (with `detail`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"`not_found`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"503":{"description":"`stale_data`: the market has not been copied yet (only right after the first install); an old copy is served as is, its age is in `X-Data-Age-Seconds`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/changes":{"get":{"tags":["changes"],"summary":"List Changes","operationId":"list_changes_v1_changes_get","parameters":[{"name":"market","in":"query","required":true,"schema":{"enum":["kr","cn","us"],"type":"string","title":"Market"}},{"name":"since","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"ISO 8601 with a time zone, e.g. 2026-09-01T00:00:00Z","title":"Since"},"description":"ISO 8601 with a time zone, e.g. 2026-09-01T00:00:00Z"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ChangeType"}},{"type":"null"}],"title":"Type"}},{"name":"min_pct","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1000.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"default":"0.5","title":"Min Pct"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesPage"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}},"X-Quota-Limit":{"description":"Quota of the period (records; data requests on the demo)","schema":{"type":"integer"}},"X-Quota-Remaining":{"description":"Quota left","schema":{"type":"integer"}},"X-Quota-Reset":{"description":"When the quota resets (UTC)","schema":{"type":"string","format":"date-time"}},"X-Data-Age-Seconds":{"description":"Age of the newest copy of the market","schema":{"type":"integer"}}}},"400":{"description":"`bad_request`: invalid parameter, `offset`, or a cursor that cannot be read","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"402":{"description":"`quota_exhausted`: the quota of the period is spent; `reset_at` says when it resets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"`market_not_in_plan`, or `feature_not_in_plan` on plans without the feed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/references/brands":{"get":{"tags":["references"],"summary":"Brands","operationId":"brands_v1_references_brands_get","parameters":[{"name":"market","in":"query","required":true,"schema":{"enum":["kr","cn","us"],"type":"string","title":"Market"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReferenceItem"},"title":"Response Brands V1 References Brands Get"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"`market_not_in_plan`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/references/models":{"get":{"tags":["references"],"summary":"Models","operationId":"models_v1_references_models_get","parameters":[{"name":"market","in":"query","required":true,"schema":{"enum":["kr","cn","us"],"type":"string","title":"Market"}},{"name":"brand","in":"query","required":true,"schema":{"type":"string","maxLength":160,"title":"Brand"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReferenceItem"},"title":"Response Models V1 References Models Get"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"`market_not_in_plan`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/references/dictionaries":{"get":{"tags":["references"],"summary":"Dictionaries","operationId":"dictionaries_v1_references_dictionaries_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dictionaries V1 References Dictionaries Get"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/references/markets":{"get":{"tags":["references"],"summary":"Markets","description":"Every market with its freshness, the number of active cars and plan availability.","operationId":"markets_v1_references_markets_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Markets V1 References Markets Get"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/usage":{"get":{"tags":["usage"],"summary":"Usage","description":"Usage of the subscription (all its keys) in the current period. Costs no quota.","operationId":"usage_v1_usage_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageOut"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/v1/us/live":{"get":{"tags":["US live search"],"summary":"Live Search","operationId":"live_search_v1_us_live_get","parameters":[{"name":"make","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Make"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"year_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year Min"}},{"name":"year_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year Max"}},{"name":"price_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Price Max"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":1,"title":"Page"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CarOut"},"title":"Response Live Search V1 Us Live Get"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests per second of the plan","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this second","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the rate window resets","schema":{"type":"integer"}},"X-Quota-Limit":{"description":"Quota of the period (records; data requests on the demo)","schema":{"type":"integer"}},"X-Quota-Remaining":{"description":"Quota left","schema":{"type":"integer"}},"X-Quota-Reset":{"description":"When the quota resets (UTC)","schema":{"type":"string","format":"date-time"}}}},"400":{"description":"`bad_request`: invalid parameter, `offset`, or a cursor that cannot be read","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"`unauthorized`: the key is missing, revoked or its subscription has ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"402":{"description":"`quota_exhausted`: the live US requests of the month are spent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"`market_not_in_plan`, or `feature_not_in_plan` on plans without live search","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"`rate_limited`: requests per second above the plan; retry after `retry_after` s","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"503":{"description":"`upstream_unavailable`, `upstream_quota_exhausted` or `upstream_invalid_response`, with `retry_after` seconds","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}},"security":[{"ApiKey":[]}]}},"/img/{car_id}/{number}.jpg":{"get":{"tags":["images"],"summary":"Photo of a car through a signed link from the API","description":"Links come in `photos` of every car and expire after about a day. Photos never spend quota.","operationId":"image_img__car_id___number__jpg_get","parameters":[{"name":"car_id","in":"path","required":true,"schema":{"type":"string","maxLength":180,"title":"Car Id"}},{"name":"number","in":"path","required":true,"schema":{"type":"integer","maximum":100,"minimum":1,"title":"Number"}},{"name":"exp","in":"query","required":true,"schema":{"type":"integer","maximum":1099511627776,"minimum":0,"description":"Link expiry, Unix seconds","title":"Exp"},"description":"Link expiry, Unix seconds"},{"name":"sig","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{32}$","description":"Link signature","title":"Sig"},"description":"Link signature"}],"responses":{"200":{"description":"The photo","content":{"image/jpeg":{}}},"400":{"description":"`bad_request`: no or malformed exp/sig","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"403":{"description":"`invalid_signature` or `link_expired`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"`not_found`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"502":{"description":"`invalid_image_upstream` or `image_upstream_unavailable`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/healthz":{"get":{"tags":["system"],"summary":"Health","description":"503 as soon as one market copy passes its freshness threshold (TZ 8).","operationId":"health_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"CarOut":{"properties":{"id":{"type":"string","title":"Id"},"market":{"type":"string","enum":["kr","cn","us"],"title":"Market"},"source":{"type":"string","enum":["encar","che168","copart","iaai"],"title":"Source"},"source_id":{"type":"string","title":"Source Id"},"title":{"type":"string","title":"Title"},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"trim":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trim"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"},"mileage_km":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mileage Km"},"fuel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fuel"},"transmission":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transmission"},"engine_cc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Engine Cc"},"body_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Type"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"vin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vin"},"price":{"$ref":"#/components/schemas/Price"},"price_usd":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Usd"},"location":{"$ref":"#/components/schemas/Location"},"photos":{"items":{"type":"string"},"type":"array","title":"Photos"},"photo_count":{"type":"integer","title":"Photo Count"},"listing_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Listing Url"},"is_active":{"type":"boolean","title":"Is Active"},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"},"disappeared_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Disappeared At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"raw":{"additionalProperties":true,"type":"object","title":"Raw"},"source_mode":{"type":"string","enum":["replica","live"],"title":"Source Mode","default":"replica"}},"type":"object","required":["id","market","source","source_id","title","brand","model","trim","year","mileage_km","fuel","transmission","engine_cc","body_type","color","vin","price","price_usd","location","photos","photo_count","listing_url","is_active","first_seen_at","last_seen_at","disappeared_at","updated_at","raw"],"title":"CarOut"},"CarsPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CarOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"}},"type":"object","required":["items","next_cursor","count"],"title":"CarsPage"},"ChangeOut":{"properties":{"id":{"type":"integer","title":"Id"},"car_id":{"type":"string","title":"Car Id"},"market":{"type":"string","title":"Market"},"type":{"type":"string","title":"Type"},"at":{"type":"string","format":"date-time","title":"At"},"old_price":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Old Price"},"new_price":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"New Price"},"pct":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Pct"}},"type":"object","required":["id","car_id","market","type","at","old_price","new_price","pct"],"title":"ChangeOut"},"ChangeType":{"type":"string","enum":["added","disappeared","price_drop","price_up"],"title":"ChangeType"},"ChangesPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ChangeOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items","next_cursor"],"title":"ChangesPage"},"ErrorBody":{"properties":{"error":{"type":"string","title":"Error","description":"bad_request, unauthorized, quota_exhausted, market_not_in_plan, feature_not_in_plan, not_found, method_not_allowed, rate_limited, stale_data, upstream_unavailable, upstream_quota_exhausted, upstream_invalid_response, invalid_signature, link_expired, invalid_image_upstream, image_upstream_unavailable, internal_error"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reset At"},"retry_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retry After"},"markets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Markets"},"data_age_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Age Seconds"}},"type":"object","required":["error"],"title":"ErrorBody"},"Location":{"properties":{"country":{"type":"string","title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},"type":"object","required":["country"],"title":"Location"},"Price":{"properties":{"amount":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["amount","currency"],"title":"Price"},"ReferenceItem":{"properties":{"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["name","count"],"title":"ReferenceItem"},"UsageMarket":{"properties":{"market":{"type":"string","title":"Market"},"records":{"type":"integer","title":"Records"},"requests":{"type":"integer","title":"Requests"},"live_us_requests":{"type":"integer","title":"Live Us Requests"}},"type":"object","required":["market","records","requests","live_us_requests"],"title":"UsageMarket"},"UsageOut":{"properties":{"plan":{"type":"string","title":"Plan"},"status":{"type":"string","enum":["demo","active","grace"],"title":"Status"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"period":{"type":"string","title":"Period","description":"YYYY-MM, or `demo` for the whole demo term"},"reset_at":{"type":"string","format":"date-time","title":"Reset At"},"quota_unit":{"type":"string","enum":["records","requests"],"title":"Quota Unit","description":"Paid plans count returned records per month; the demo counts data requests"},"quota_limit":{"type":"integer","title":"Quota Limit"},"quota_used":{"type":"integer","title":"Quota Used"},"records_limit":{"type":"integer","title":"Records Limit"},"records_used":{"type":"integer","title":"Records Used"},"live_us_limit":{"type":"integer","title":"Live Us Limit"},"live_us_used":{"type":"integer","title":"Live Us Used"},"by_market":{"items":{"$ref":"#/components/schemas/UsageMarket"},"type":"array","title":"By Market"}},"type":"object","required":["plan","status","expires_at","period","reset_at","quota_unit","quota_limit","quota_used","records_limit","records_used","live_us_limit","live_us_used","by_market"],"title":"UsageOut"}},"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}