Get a request
GET /api/v1/deal-sets/{id}
One request's ranked results.
| Fact | Value |
|---|---|
| Availability | Available |
| Credential | The buyer's signed-in website session; An AI assistant the buyer approved, sending the access token she gave it. It sees only what the buyer allowed it to see |
| Rate limit | read: 120 per 60 s |
| Deadline | 8 s. Past it, the read is cancelled and nothing partial is sent. |
Path parameters
| Name | Type | Description |
|---|---|---|
id | string | The request's id, its dealSetId (a uuid). Anything else is not_found. |
Response
200 with { "data": … }. Money is integer US cents, in fields named …Cents.
| Field | Type | Description |
|---|---|---|
dealSetId | string | |
car | object | |
car.year | integer | |
car.make | string | |
car.model | string | |
car.trim | string, nullable | A configuration value the posted configuration may hold without the buyer choosing it (a default, an auto-fill, a pasted link). Null for an AI assistant acting for the buyer. |
car.exteriorColor | string, nullable | A configuration value the posted configuration may hold without the buyer choosing it (a default, an auto-fill, a pasted link). Null for an AI assistant acting for the buyer. |
car.interiorColor | string, nullable | A configuration value the posted configuration may hold without the buyer choosing it (a default, an auto-fill, a pasted link). Null for an AI assistant acting for the buyer. |
car.drivetrain | string, nullable | A configuration value the posted configuration may hold without the buyer choosing it (a default, an auto-fill, a pasted link). Null for an AI assistant acting for the buyer. |
car.powertrain | string, nullable | A configuration value the posted configuration may hold without the buyer choosing it (a default, an auto-fill, a pasted link). Null for an AI assistant acting for the buyer. |
search | object | |
search.buyerZip | string, nullable | The buyer's own search ZIP, returned only to the buyer's own session. Null for an AI assistant acting for the buyer. |
search.radiusMiles | number, nullable | The search radius in miles around the buyer's ZIP: 100 on the site, 250 when the buyer chose Search further out, or the value an API caller requested. Null for an AI assistant acting for the buyer, or when unknown. |
counts | object | |
counts.written | integer | |
counts.waiting | integer | |
counts.differentCar | integer | |
counts.ended | integer | |
counts.endedWithPrice | integer | |
counts.closedWithPrice | integer | |
counts.total | integer, nullable | How many dealerships the search found for this set. Null for an AI assistant acting for the buyer (the count is third-party listing data). Counts of dealers who wrote back stay. |
counts.needsYou | integer | |
headerLine | string, nullable | One-line summary of the set, for display. Null for an AI assistant acting for the buyer: the line states how many dealers the set holds, which is third-party listing data. Display text: its words may change; do not branch on it. |
hero | object, nullable | |
hero.rowKey | string | |
hero.label | string | Display label for the lowest written price's row. Display text: its words may change; do not branch on it. |
hero.otdCents | integer | |
hero.sellingPriceCents | integer, nullable | |
hero.taxesAndFeesCents | integer, nullable | |
hero.listedAtCents | integer, nullable | The list price of the listing in integer cents (third-party listing data). It is the listed price, never an offer or a written price. Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
hero.writtenAt | string, nullable | |
hero.distanceMiles | number, nullable | Distance from the buyer ZIP in miles (third-party listing data). Before the dealership is unlocked this is the LOWER BOUND of the distance band (0, 10, 25, 50 or 100), not the distance: read distanceBand. Null for an AI assistant acting for the buyer. |
hero.distanceBand | string, nullable | The distance band as words: Under 10 miles, 10 to 25 miles, 25 to 50 miles, 50 to 100 miles or Over 100 miles (third-party listing data). Always the band, never an exact distance. Null for an AI assistant acting for the buyer. |
hero.trim | string, nullable | A trim read from the listing, not from the buyer choice (third-party listing data). Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
hero.gapToNextCents | integer, nullable | |
hero.canChoose | boolean | True once this row may be chosen: it has been unlocked (the dealer is no longer hidden), not yet chosen, a written price for the same car, not archived. See the versioning changelog for how this field changed meaning. |
hero.canUnlock | boolean | True while the dealer is STILL hidden on this row: a written price for the same car, not archived. False once the row has been unlocked (or chosen). See the versioning changelog for how this field relates to canChoose. |
hero.chosen | boolean | |
ranked | array of object | |
ranked[].trim | string, nullable | A trim read from the listing, not from the buyer choice (third-party listing data). Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
ranked[].rows | array of object | |
ranked[].rows[].rowKey | string | |
ranked[].rows[].label | string | Display label for the row. A connected assistant (a delegated agent) ALWAYS gets a description of the car: colour, year, model, trim, miles to the nearest 100 and the listed price, a part we do not have left out, never the dealership's name. Two rows can read the same: refer to a row by rowKey. Its words may change; never branch on it. The buyer's own session sees the label her page shows and the dealership's name once she has unlocked or chosen it. Display text: its words may change; do not branch on it. |
ranked[].rows[].hidden | boolean | |
ranked[].rows[].chosen | boolean | |
ranked[].rows[].archived | boolean | |
ranked[].rows[].state | "written" | "waiting" | "different_car" | "ended" | |
ranked[].rows[].ended | "sold" | "closed_with_price" | "no_price" | "timed_out", nullable | |
ranked[].rows[].statusLabel | string | The row's status in words. Branch on state and ended, not on this. Display text: its words may change; do not branch on it. |
ranked[].rows[].otdCents | integer, nullable | |
ranked[].rows[].sellingPriceCents | integer, nullable | |
ranked[].rows[].listedAtCents | integer, nullable | The list price of the listing in integer cents (third-party listing data). It is the listed price, never an offer or a written price. Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
ranked[].rows[].writtenAt | string, nullable | |
ranked[].rows[].gapToLowestCents | integer, nullable | |
ranked[].rows[].canChoose | boolean | True once this row may be chosen: it has been unlocked (the dealer is no longer hidden), not yet chosen, a written price for the same car, not archived. See the versioning changelog for how this field changed meaning. |
ranked[].rows[].canUnlock | boolean | True while the dealer is STILL hidden on this row: a written price for the same car, not archived. False once the row has been unlocked (or chosen). See the versioning changelog for how this field relates to canChoose. |
ranked[].rows[].quotedTrim | string, nullable | A trim read from the listing, not from the buyer choice (third-party listing data). Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
ranked[].rows[].distanceMiles | number, nullable | Distance from the buyer ZIP in miles (third-party listing data). Before the dealership is unlocked this is the LOWER BOUND of the distance band (0, 10, 25, 50 or 100), not the distance: read distanceBand. Null for an AI assistant acting for the buyer. |
ranked[].rows[].distanceBand | string, nullable | The distance band as words: Under 10 miles, 10 to 25 miles, 25 to 50 miles, 50 to 100 miles or Over 100 miles (third-party listing data). Always the band, never an exact distance. Null for an AI assistant acting for the buyer. |
ranked[].rows[].priceCheckHref | string, nullable | |
ranked[].rows[].isVerifiedPartner | boolean | True when this dealership is a Verified partner: it pays Ridekick a subscription and has agreed to honor its written price while the car is available, if the buyer qualifies for any rebates, incentives or financing in that price. Always present in answers to builders, and may be omitted from answers to hosted assistants; false means either that the dealership is not a partner or that its status is not shown for this row yet, so don't present false as "not a partner", and show the conditions above wherever you show true. |
needsYou | array of question | draft | |
needsYou[].kind | "question" | "draft" | |
needsYou[].rowKey | string | |
needsYou[].label | string | When kind is "question": Display label for the row the question is about. Display text: its words may change; do not branch on it. When kind is "draft": Display label for the row the draft is for. Display text: its words may change; do not branch on it. |
needsYou[].promptId | string, nullable | Only when kind is "question". |
needsYou[].category | string | Only when kind is "question". |
needsYou[].heading | string | Short heading for the question. Display text: its words may change; do not branch on it. Only when kind is "question". |
needsYou[].question | string, nullable | The dealer's question in words, or null. Null for an AI assistant acting for the buyer. Display text: its words may change; do not branch on it. Only when kind is "question". |
needsYou[].answerMode | string | Only when kind is "question". |
needsYou[].otdCents | integer, nullable | Only when kind is "question". |
needsYou[].requestId | string | Only when kind is "draft". |
needsYou[].preview | string, nullable | Opening of the reply waiting for the buyer, or null. Null for an AI assistant acting for the buyer. Display text: its words may change; do not branch on it. Only when kind is "draft". |
needsYou[].previewComplete | boolean (optional) | True only when preview is the whole reply. False when preview shows only part of it, or is null. Only when kind is "draft". |
everyoneElse | object | |
everyoneElse.waiting | array of object | |
everyoneElse.waiting[].rowKey | string | |
everyoneElse.waiting[].label | string | Display label for the row. A connected assistant (a delegated agent) ALWAYS gets a description of the car: colour, year, model, trim, miles to the nearest 100 and the listed price, a part we do not have left out, never the dealership's name. Two rows can read the same: refer to a row by rowKey. Its words may change; never branch on it. The buyer's own session sees the label her page shows and the dealership's name once she has unlocked or chosen it. Display text: its words may change; do not branch on it. |
everyoneElse.waiting[].hidden | boolean | |
everyoneElse.waiting[].chosen | boolean | |
everyoneElse.waiting[].archived | boolean | |
everyoneElse.waiting[].state | "written" | "waiting" | "different_car" | "ended" | |
everyoneElse.waiting[].ended | "sold" | "closed_with_price" | "no_price" | "timed_out", nullable | |
everyoneElse.waiting[].statusLabel | string | The row's status in words. Branch on state and ended, not on this. Display text: its words may change; do not branch on it. |
everyoneElse.waiting[].otdCents | integer, nullable | |
everyoneElse.waiting[].sellingPriceCents | integer, nullable | |
everyoneElse.waiting[].listedAtCents | integer, nullable | The list price of the listing in integer cents (third-party listing data). It is the listed price, never an offer or a written price. Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.waiting[].writtenAt | string, nullable | |
everyoneElse.waiting[].gapToLowestCents | integer, nullable | |
everyoneElse.waiting[].canChoose | boolean | True once this row may be chosen: it has been unlocked (the dealer is no longer hidden), not yet chosen, a written price for the same car, not archived. See the versioning changelog for how this field changed meaning. |
everyoneElse.waiting[].canUnlock | boolean | True while the dealer is STILL hidden on this row: a written price for the same car, not archived. False once the row has been unlocked (or chosen). See the versioning changelog for how this field relates to canChoose. |
everyoneElse.waiting[].quotedTrim | string, nullable | A trim read from the listing, not from the buyer choice (third-party listing data). Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.waiting[].distanceMiles | number, nullable | Distance from the buyer ZIP in miles (third-party listing data). Before the dealership is unlocked this is the LOWER BOUND of the distance band (0, 10, 25, 50 or 100), not the distance: read distanceBand. Null for an AI assistant acting for the buyer. |
everyoneElse.waiting[].distanceBand | string, nullable | The distance band as words: Under 10 miles, 10 to 25 miles, 25 to 50 miles, 50 to 100 miles or Over 100 miles (third-party listing data). Always the band, never an exact distance. Null for an AI assistant acting for the buyer. |
everyoneElse.waiting[].priceCheckHref | string, nullable | |
everyoneElse.waiting[].isVerifiedPartner | boolean | True when this dealership is a Verified partner: it pays Ridekick a subscription and has agreed to honor its written price while the car is available, if the buyer qualifies for any rebates, incentives or financing in that price. Always present in answers to builders, and may be omitted from answers to hosted assistants; false means either that the dealership is not a partner or that its status is not shown for this row yet, so don't present false as "not a partner", and show the conditions above wherever you show true. |
everyoneElse.differentCar | array of object | |
everyoneElse.differentCar[].rowKey | string | |
everyoneElse.differentCar[].label | string | Display label for the row. A connected assistant (a delegated agent) ALWAYS gets a description of the car: colour, year, model, trim, miles to the nearest 100 and the listed price, a part we do not have left out, never the dealership's name. Two rows can read the same: refer to a row by rowKey. Its words may change; never branch on it. The buyer's own session sees the label her page shows and the dealership's name once she has unlocked or chosen it. Display text: its words may change; do not branch on it. |
everyoneElse.differentCar[].hidden | boolean | |
everyoneElse.differentCar[].chosen | boolean | |
everyoneElse.differentCar[].archived | boolean | |
everyoneElse.differentCar[].state | "written" | "waiting" | "different_car" | "ended" | |
everyoneElse.differentCar[].ended | "sold" | "closed_with_price" | "no_price" | "timed_out", nullable | |
everyoneElse.differentCar[].statusLabel | string | The row's status in words. Branch on state and ended, not on this. Display text: its words may change; do not branch on it. |
everyoneElse.differentCar[].otdCents | integer, nullable | |
everyoneElse.differentCar[].sellingPriceCents | integer, nullable | |
everyoneElse.differentCar[].listedAtCents | integer, nullable | The list price of the listing in integer cents (third-party listing data). It is the listed price, never an offer or a written price. Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.differentCar[].writtenAt | string, nullable | |
everyoneElse.differentCar[].gapToLowestCents | integer, nullable | |
everyoneElse.differentCar[].canChoose | boolean | True once this row may be chosen: it has been unlocked (the dealer is no longer hidden), not yet chosen, a written price for the same car, not archived. See the versioning changelog for how this field changed meaning. |
everyoneElse.differentCar[].canUnlock | boolean | True while the dealer is STILL hidden on this row: a written price for the same car, not archived. False once the row has been unlocked (or chosen). See the versioning changelog for how this field relates to canChoose. |
everyoneElse.differentCar[].quotedTrim | string, nullable | A trim read from the listing, not from the buyer choice (third-party listing data). Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.differentCar[].distanceMiles | number, nullable | Distance from the buyer ZIP in miles (third-party listing data). Before the dealership is unlocked this is the LOWER BOUND of the distance band (0, 10, 25, 50 or 100), not the distance: read distanceBand. Null for an AI assistant acting for the buyer. |
everyoneElse.differentCar[].distanceBand | string, nullable | The distance band as words: Under 10 miles, 10 to 25 miles, 25 to 50 miles, 50 to 100 miles or Over 100 miles (third-party listing data). Always the band, never an exact distance. Null for an AI assistant acting for the buyer. |
everyoneElse.differentCar[].priceCheckHref | string, nullable | |
everyoneElse.differentCar[].isVerifiedPartner | boolean | True when this dealership is a Verified partner: it pays Ridekick a subscription and has agreed to honor its written price while the car is available, if the buyer qualifies for any rebates, incentives or financing in that price. Always present in answers to builders, and may be omitted from answers to hosted assistants; false means either that the dealership is not a partner or that its status is not shown for this row yet, so don't present false as "not a partner", and show the conditions above wherever you show true. |
everyoneElse.ended | array of object | |
everyoneElse.ended[].rowKey | string | |
everyoneElse.ended[].label | string | Display label for the row. A connected assistant (a delegated agent) ALWAYS gets a description of the car: colour, year, model, trim, miles to the nearest 100 and the listed price, a part we do not have left out, never the dealership's name. Two rows can read the same: refer to a row by rowKey. Its words may change; never branch on it. The buyer's own session sees the label her page shows and the dealership's name once she has unlocked or chosen it. Display text: its words may change; do not branch on it. |
everyoneElse.ended[].hidden | boolean | |
everyoneElse.ended[].chosen | boolean | |
everyoneElse.ended[].archived | boolean | |
everyoneElse.ended[].state | "written" | "waiting" | "different_car" | "ended" | |
everyoneElse.ended[].ended | "sold" | "closed_with_price" | "no_price" | "timed_out", nullable | |
everyoneElse.ended[].statusLabel | string | The row's status in words. Branch on state and ended, not on this. Display text: its words may change; do not branch on it. |
everyoneElse.ended[].otdCents | integer, nullable | |
everyoneElse.ended[].sellingPriceCents | integer, nullable | |
everyoneElse.ended[].listedAtCents | integer, nullable | The list price of the listing in integer cents (third-party listing data). It is the listed price, never an offer or a written price. Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.ended[].writtenAt | string, nullable | |
everyoneElse.ended[].gapToLowestCents | integer, nullable | |
everyoneElse.ended[].canChoose | boolean | True once this row may be chosen: it has been unlocked (the dealer is no longer hidden), not yet chosen, a written price for the same car, not archived. See the versioning changelog for how this field changed meaning. |
everyoneElse.ended[].canUnlock | boolean | True while the dealer is STILL hidden on this row: a written price for the same car, not archived. False once the row has been unlocked (or chosen). See the versioning changelog for how this field relates to canChoose. |
everyoneElse.ended[].quotedTrim | string, nullable | A trim read from the listing, not from the buyer choice (third-party listing data). Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.ended[].distanceMiles | number, nullable | Distance from the buyer ZIP in miles (third-party listing data). Before the dealership is unlocked this is the LOWER BOUND of the distance band (0, 10, 25, 50 or 100), not the distance: read distanceBand. Null for an AI assistant acting for the buyer. |
everyoneElse.ended[].distanceBand | string, nullable | The distance band as words: Under 10 miles, 10 to 25 miles, 25 to 50 miles, 50 to 100 miles or Over 100 miles (third-party listing data). Always the band, never an exact distance. Null for an AI assistant acting for the buyer. |
everyoneElse.ended[].priceCheckHref | string, nullable | |
everyoneElse.ended[].isVerifiedPartner | boolean | True when this dealership is a Verified partner: it pays Ridekick a subscription and has agreed to honor its written price while the car is available, if the buyer qualifies for any rebates, incentives or financing in that price. Always present in answers to builders, and may be omitted from answers to hosted assistants; false means either that the dealership is not a partner or that its status is not shown for this row yet, so don't present false as "not a partner", and show the conditions above wherever you show true. |
everyoneElse.archived | array of object | |
everyoneElse.archived[].rowKey | string | |
everyoneElse.archived[].label | string | Display label for the row. A connected assistant (a delegated agent) ALWAYS gets a description of the car: colour, year, model, trim, miles to the nearest 100 and the listed price, a part we do not have left out, never the dealership's name. Two rows can read the same: refer to a row by rowKey. Its words may change; never branch on it. The buyer's own session sees the label her page shows and the dealership's name once she has unlocked or chosen it. Display text: its words may change; do not branch on it. |
everyoneElse.archived[].hidden | boolean | |
everyoneElse.archived[].chosen | boolean | |
everyoneElse.archived[].archived | boolean | |
everyoneElse.archived[].state | "written" | "waiting" | "different_car" | "ended" | |
everyoneElse.archived[].ended | "sold" | "closed_with_price" | "no_price" | "timed_out", nullable | |
everyoneElse.archived[].statusLabel | string | The row's status in words. Branch on state and ended, not on this. Display text: its words may change; do not branch on it. |
everyoneElse.archived[].otdCents | integer, nullable | |
everyoneElse.archived[].sellingPriceCents | integer, nullable | |
everyoneElse.archived[].listedAtCents | integer, nullable | The list price of the listing in integer cents (third-party listing data). It is the listed price, never an offer or a written price. Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.archived[].writtenAt | string, nullable | |
everyoneElse.archived[].gapToLowestCents | integer, nullable | |
everyoneElse.archived[].canChoose | boolean | True once this row may be chosen: it has been unlocked (the dealer is no longer hidden), not yet chosen, a written price for the same car, not archived. See the versioning changelog for how this field changed meaning. |
everyoneElse.archived[].canUnlock | boolean | True while the dealer is STILL hidden on this row: a written price for the same car, not archived. False once the row has been unlocked (or chosen). See the versioning changelog for how this field relates to canChoose. |
everyoneElse.archived[].quotedTrim | string, nullable | A trim read from the listing, not from the buyer choice (third-party listing data). Released to an AI assistant by the CEO's decision D37 (2026-10-08). |
everyoneElse.archived[].distanceMiles | number, nullable | Distance from the buyer ZIP in miles (third-party listing data). Before the dealership is unlocked this is the LOWER BOUND of the distance band (0, 10, 25, 50 or 100), not the distance: read distanceBand. Null for an AI assistant acting for the buyer. |
everyoneElse.archived[].distanceBand | string, nullable | The distance band as words: Under 10 miles, 10 to 25 miles, 25 to 50 miles, 50 to 100 miles or Over 100 miles (third-party listing data). Always the band, never an exact distance. Null for an AI assistant acting for the buyer. |
everyoneElse.archived[].priceCheckHref | string, nullable | |
everyoneElse.archived[].isVerifiedPartner | boolean | True when this dealership is a Verified partner: it pays Ridekick a subscription and has agreed to honor its written price while the car is available, if the buyer qualifies for any rebates, incentives or financing in that price. Always present in answers to builders, and may be omitted from answers to hosted assistants; false means either that the dealership is not a partner or that its status is not shown for this row yet, so don't present false as "not a partner", and show the conditions above wherever you show true. |
Example call
curl -X GET "https://www.ridekick.com/api/v1/deal-sets/{id}" \
-H "Authorization: Bearer $RIDEKICK_TOKEN"const res = await fetch("https://www.ridekick.com/api/v1/deal-sets/{id}", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.RIDEKICK_TOKEN}` },
});
const { data } = await res.json();import os
import requests
res = requests.get("https://www.ridekick.com/api/v1/deal-sets/{id}", headers={"Authorization": f"Bearer {os.environ['RIDEKICK_TOKEN']}"})
data = res.json()["data"]Example
{
"data": {
"dealSetId": "0b6f3c2e-9d41-4c7a-8e15-3a2f7c9d1e04",
"car": {
"year": 2026,
"make": "Testmake",
"model": "Testmodel",
"trim": "Sport",
"exteriorColor": "Blue",
"interiorColor": "Black",
"drivetrain": "AWD",
"powertrain": "hybrid"
},
"search": {
"buyerZip": "94110",
"radiusMiles": 50
},
"counts": {
"written": 1,
"waiting": 1,
"differentCar": 1,
"ended": 1,
"endedWithPrice": 1,
"closedWithPrice": 0,
"total": 4,
"needsYou": 2
},
"headerLine": "1 written price, 1 waiting",
"hero": {
"rowKey": "neg-1",
"label": "Dealer 1",
"otdCents": 3800000,
"sellingPriceCents": 3500000,
"taxesAndFeesCents": 300000,
"listedAtCents": 3650000,
"writtenAt": "2026-09-28T13:00:00.000Z",
"distanceMiles": 12.4,
"distanceBand": "10 to 25 miles",
"trim": "Sport",
"gapToNextCents": 45000,
"canChoose": true,
"canUnlock": false,
"chosen": false
},
"ranked": [
{
"trim": "Sport",
"rows": [
{
"rowKey": "neg-1",
"label": "Dealer 1",
"hidden": true,
"chosen": false,
"archived": false,
"state": "written",
"ended": null,
"statusLabel": "Written price",
"otdCents": 3800000,
"sellingPriceCents": 3500000,
"listedAtCents": 3650000,
"writtenAt": "2026-09-28T13:00:00.000Z",
"gapToLowestCents": 0,
"canChoose": true,
"canUnlock": false,
"quotedTrim": "Sport",
"distanceMiles": 12.4,
"distanceBand": "10 to 25 miles",
"priceCheckHref": null,
"isVerifiedPartner": true
}
]
}
],
"needsYou": [
{
"kind": "question",
"rowKey": "neg-2",
"label": "Dealer 2",
"promptId": "prompt-1",
"category": "trade_in",
"heading": "A question about your trade-in",
"question": "Do you have a trade-in?",
"answerMode": "freeform",
"otdCents": 3900000
},
{
"kind": "draft",
"rowKey": "neg-3",
"label": "Dealer 3",
"requestId": "req-1",
"preview": "A reply we drafted.",
"previewComplete": true
}
],
"everyoneElse": {
"waiting": [
{
"rowKey": "neg-2",
"label": "Dealer 2",
"hidden": true,
"chosen": false,
"archived": false,
"state": "waiting",
"ended": null,
"statusLabel": "Waiting",
"otdCents": null,
"sellingPriceCents": null,
"listedAtCents": 3650000,
"writtenAt": null,
"gapToLowestCents": null,
"canChoose": false,
"canUnlock": false,
"quotedTrim": "Sport",
"distanceMiles": 12.4,
"distanceBand": "10 to 25 miles",
"priceCheckHref": null,
"isVerifiedPartner": true
}
],
"differentCar": [
{
"rowKey": "neg-3",
"label": "Dealer 3",
"hidden": true,
"chosen": false,
"archived": false,
"state": "different_car",
"ended": null,
"statusLabel": "Different car",
"otdCents": 3800000,
"sellingPriceCents": 3500000,
"listedAtCents": 3650000,
"writtenAt": "2026-09-28T13:00:00.000Z",
"gapToLowestCents": null,
"canChoose": false,
"canUnlock": false,
"quotedTrim": "Base",
"distanceMiles": 12.4,
"distanceBand": "10 to 25 miles",
"priceCheckHref": null,
"isVerifiedPartner": true
}
],
"ended": [
{
"rowKey": "neg-4",
"label": "Dealer 4",
"hidden": true,
"chosen": false,
"archived": false,
"state": "ended",
"ended": "sold",
"statusLabel": "Sold",
"otdCents": 3800000,
"sellingPriceCents": 3500000,
"listedAtCents": 3650000,
"writtenAt": "2026-09-28T13:00:00.000Z",
"gapToLowestCents": null,
"canChoose": false,
"canUnlock": false,
"quotedTrim": "Sport",
"distanceMiles": 12.4,
"distanceBand": "10 to 25 miles",
"priceCheckHref": null,
"isVerifiedPartner": true
}
],
"archived": []
}
}
}Errors
| Status | Code | Means |
|---|---|---|
| 404 | not_found | No such resource, or not yours. Also answered while the endpoint is not turned on for you. Never 403: whether another buyer's resource exists is not disclosed. |
| 401 | unauthenticated | Signed out, or the credential was not accepted: an access token that is not valid, or an Authorization header that is not a Ridekick access token. |
| 503 | auth_unverifiable | Sign-in could not be confirmed. This is not the same as signed out. |
| 503 | unavailable | The service did not answer right now, so nothing was returned or sent. Try again in a moment, and wait the number of seconds in Retry-After when it is present. |
| 429 | rate_limited | Too many requests from this principal in the window. |
| 403 | insufficient_scope | The credential does not include the scope this endpoint needs. The WWW-Authenticate header names the required scope. |
| 500 | internal | Something failed on our side. The response carries no data. |
Last updated