VitrinaAPI

List who's interested in a car

Who asked about a unit, from which portal and at what stage.

Car dealershipsOnly in car-dealership workspaces.

The same car gets inquiries from the website, Chileautos, Yapo, Mercado Libre and Facebook. This recipe answers the question a salesperson asks in front of a unit: who asked, from where, and how far along the conversation with each one is.

Trap

The lead carries no vehicle_id field

A lead can have several cars of interest at once, and the same car can have several leads. Always filter by the car (step 1); don't look for a vehicle_id field inside the lead.

Before you start

  • A key with leads:read for the opportunities.
  • contacts:read for each interested person's name and phone, and stages:read to see how far along they are.
  • marketplace:read for the two endpoints that summarise the car.

1. The leads for this unit

curl "https://api.vitrinadev.com/api/v1/leads?resource_type=vehicle&resource_id=26a00eb8-62ce-4a02-a9a7-72204ed8a392" \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": [
    {
      "id": "ce5fdcc1-ae78-468f-a7aa-5b9b587c38ca",
      "status": "open",
      "source": "yapo",
      "title": "Toyota Yaris 2022, consulta Yapo",
      "intent": "buy",
      "contact_id": "01a0ce14-39dd-7fc8-8c45-b3b1721a78c2",
      "stage_id": "00000000-0000-4000-8000-000000004101",
      "display_id": "L-33",
      "contact": {
        "id": "01a0ce14-39dd-7fc8-8c45-b3b1721a78c2",
        "name": "Rodrigo Paredes",
        "email": null,
        "phone": "+56978451236"
      },
      "stage": { "id": "00000000-0000-4000-8000-000000004101", "name": "Nuevo", "slug": "new" },
      "pipeline": { "id": "00000000-0000-4000-8000-000000004000", "kind": "sales", "name": "Ventas" }
    },
    {
      "id": "2fa9c593-1200-4e2d-88d6-0bf8e637261f",
      "status": "open",
      "source": "website",
      "title": "Toyota Yaris 2022, consulta del sitio",
      "intent": "buy",
      "contact_id": "01a0ce13-d6a9-70cd-8d7f-7345a88df003",
      "stage_id": "00000000-0000-4000-8000-000000004101",
      "display_id": "L-32",
      "contact": {
        "id": "01a0ce13-d6a9-70cd-8d7f-7345a88df003",
        "name": "Camila Rojas",
        "email": "[email protected]",
        "phone": "+56945678123"
      },
      "stage": { "id": "00000000-0000-4000-8000-000000004101", "name": "Nuevo", "slug": "new" },
      "pipeline": { "id": "00000000-0000-4000-8000-000000004000", "kind": "sales", "name": "Ventas" }
    }
  ],
  "meta": { "pagination": { "total": 2, "limit": 25 } }
}

resource_type and resource_id come together or not at all: sending one without the other rejects the call. source names the portal (website, yapo, chileautos, mercadolibre), and contact and stage only show up if your key holds contacts:read and stages:read, respectively. Without those scopes the lead arrives without those blocks.

2. How much interest, summarised

curl "https://api.vitrinadev.com/api/v1/vehicles/26a00eb8-62ce-4a02-a9a7-72204ed8a392/interest" \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": {
    "distinct_contacts": 2,
    "named_leads": 2,
    "by_portal": [
      { "source": "website", "count": 1 },
      { "source": "yapo", "count": 1 }
    ],
    "first_contact_at": "2026-09-23T11:43:28.152Z",
    "last_contact_at": "2026-09-23T11:43:47.214Z",
    "anonymous_interest": 0,
    "time_in_stock_days": 0,
    "is_sold": false
  }
}

This endpoint carries no contact ids: it's the "7 people asked" summary, and a key that reads stock is enough. If the car already sold, this summary comes back empty.

3. The car's timeline

For the full history, who and when, including vendido units:

curl "https://api.vitrinadev.com/api/v1/vehicles/26a00eb8-62ce-4a02-a9a7-72204ed8a392/activity" \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": [
    {
      "kind": "lead",
      "contact_id": "01a0ce14-39dd-7fc8-8c45-b3b1721a78c2",
      "lead_id": "ce5fdcc1-ae78-468f-a7aa-5b9b587c38ca",
      "source": "yapo",
      "contact_name": "Rodrigo Paredes",
      "at": "2026-09-23T11:43:47.214Z"
    },
    {
      "kind": "lead",
      "contact_id": "01a0ce13-d6a9-70cd-8d7f-7345a88df003",
      "lead_id": "2fa9c593-1200-4e2d-88d6-0bf8e637261f",
      "source": "website",
      "contact_name": "Camila Rojas",
      "at": "2026-09-23T11:43:28.152Z"
    }
  ]
}

Unlike /interest, this list survives the sale. A vendido car keeps its full history here: it's the record of what happened, not a snapshot of today's interest.

4. Who the person is

With the contact_id from any of the calls above, the full record:

curl "https://api.vitrinadev.com/api/v1/contacts/01a0ce13-d6a9-70cd-8d7f-7345a88df003" \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": {
    "id": "01a0ce13-d6a9-70cd-8d7f-7345a88df003",
    "name": "Camila Rojas",
    "email": "[email protected]",
    "phone": "+56945678123",
    "lifecycle_stage": "unknown",
    "lead_sources": ["website"],
    "named": true,
    "display_name": "Camila Rojas"
  }
}

This needs contacts:read, a scope apart from leads:read: a key that only lists opportunities doesn't open the contact behind them.

When it fails

Sending resource_id without resource_type in step 1, or the other way around, rejects the whole call with VALIDATION_ERROR.

In the app: the same list is on the car's page, in the Interés card. The page has no tabs. You scroll it, and the card sits between Publicaciones and Solicitudes.

The Interés card on a car's page: how many people asked, which portal each lead came from, and when

With the list in hand, the next step is writing to them: Reopen a cold conversation with a template, without Meta blocking you. It covers sending them WhatsApp without burning the number, for example when a similar car arrives.

How leads come in to begin with, signature verification included, is in Receive leads in your CRM with webhooks.

On this page