VitrinaAPI

Properties

A real-estate broker's portfolio: each property with its operation, price in UF or CLP, features and status.

Beta
This may change at any time, with a changelog entry and a notice to recent callers — see versioning.

Download the full API pública projection: openapi.json.

MethodPathWhat it does
GET/propertiesSearch the cartera
POST/propertiesAdd a property to the cartera
DELETE/properties/{id}Remove a property from the cartera
GET/properties/{id}One property
PATCH/properties/{id}Edit a property (pause it with status: pausada)
GET/properties/{id}/publicationsA property’s listings on the portals
POST/properties/{id}/publicationsPublish a property to Portal Inmobiliario
DELETE/properties/{id}/publications/{publicationId}Close a listing on the portal
POST/properties/{id}/release-fieldsLet protected fields follow the source again
GET/properties/portalsConnected portal accounts and their import
DELETE/properties/portals/{accountId}Disconnect a portal account
GET/properties/portals/{accountId}/listing-tiersListing tiers the account’s packs allow
POST/properties/portals/{accountId}/syncImport the account’s listings now
POST/properties/portals/mercadolibre/connectStart connecting Portal Inmobiliario

GET /properties

Search the cartera

Live properties, newest first, every filter ANDed. Prices filter across currencies: «2 dormitorios en Ñuñoa bajo UF 5.000» is comuna=Ñuñoa&min_bedrooms=2&max_price=5000&price_currency=UF, and it also finds properties priced in CLP, converted with the day’s UF (meta.uf_value). Without a known UF value, a price bound matches only rows in its own currency. Requires marketplace:read. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
qquerystringnomáx. 200
operationqueryventa \arriendono
property_typequerydepartamento \casa \oficina \
statusquerydisponible \bloqueada \reservada \
include_unitsquerybooleanno
comunaquerystring[]no
min_bedroomsqueryinteger | nullno≥ 0, ≤ 99
min_bathroomsqueryinteger | nullno≥ 0, ≤ 99
min_parkingqueryinteger | nullno≥ 0, ≤ 99
pets_allowedquerybooleanno
furnishedquerybooleanno
broker_user_idqueryuuidno
min_pricequerynumberno> 0
max_pricequerynumberno> 0
price_currencyqueryUF \CLPno
limitqueryintegerno≥ 1, ≤ 200
offsetqueryinteger | nullno≥ 0
curl https://api.vitrinadev.com/api/v1/properties \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (200)

{
  "data": [
    {
      "id": "0199e3a0-0000-7000-8000-000000000001",
      "tenant_id": "0199e3a0-0000-7000-8000-0000000000aa",
      "display_id": "I-12",
      "title": "Departamento 2D2B con terraza, metro Irarrázaval",
      "description": "Luminoso, orientación norte, a pasos del metro.",
      "operation": "venta",
      "property_type": "departamento",
      "status": "disponible",
      "region": "Metropolitana",
      "comuna": "Ñuñoa",
      "sector": "Plaza Ñuñoa",
      "address": "Av. Irarrázaval 0000, depto 000",
      "sale_price_amount": 4800,
      "sale_price_currency": "UF",
      "rent_price_amount": null,
      "rent_price_currency": null,
      "common_expenses_clp": 120000,
      "property_tax_clp": 85000,
      "bedrooms": 2,
      "bathrooms": 2,
      "usable_area_m2": 62,
      "total_area_m2": 70,
      "parking_spaces": 1,
      "storage_units": 1,
      "orientation": "norte",
      "floor": 8,
      "year_built": 2018,
      "furnished": false,
      "pets_allowed": true,
      "photos": [
        "https://example.com/i-12/1.jpg"
      ],
      "broker_user_id": "0199e3a0-0000-7000-8000-0000000000bb",
      "owner_name": "Propietaria de ejemplo",
      "owner_phone": "+56900000000",
      "owner_email": "[email protected]",
      "source": "manual",
      "external_ref": null,
      "protected_fields": [],
      "created_by": "0199e3a0-0000-7000-8000-0000000000bb",
      "created_at": "2026-10-14T12:00:00.000Z",
      "updated_at": "2026-10-14T12:00:00.000Z",
      "sale_price": {
        "amount": 4800,
        "currency": "UF",
        "amount_clp": 189120000,
        "amount_uf": 4800
      },
      "rent_price": null
    }
  ],
  "meta": {
    "pagination": {
      "total": 1,
      "limit": 50,
      "offset": 0
    },
    "uf_value": {
      "clp": 39400,
      "date": "2026-10-14"
    }
  }
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

POST /properties

Add a property to the cartera

A price belongs to an operation the property is offered for (sale_price_* needs venta, rent_price_* needs arriendo; venta_y_arriendo carries both), and each price carries its currency (UF or CLP). The display id (I-n) is allocated by the server. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

curl -X POST https://api.vitrinadev.com/api/v1/properties \
  -H "Authorization: Bearer $VITRINA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Departamento 2D2B con terraza, metro Irarrázaval",
    "operation": "venta",
    "property_type": "departamento",
    "comuna": "Ñuñoa",
    "sale_price_amount": 4800,
    "sale_price_currency": "UF",
    "bedrooms": 2,
    "bathrooms": 2
  }'

Example response (201)

{
  "data": {
    "id": "0199e3a0-0000-7000-8000-000000000001",
    "tenant_id": "0199e3a0-0000-7000-8000-0000000000aa",
    "display_id": "I-12",
    "title": "Departamento 2D2B con terraza, metro Irarrázaval",
    "description": "Luminoso, orientación norte, a pasos del metro.",
    "operation": "venta",
    "property_type": "departamento",
    "status": "disponible",
    "region": "Metropolitana",
    "comuna": "Ñuñoa",
    "sector": "Plaza Ñuñoa",
    "address": "Av. Irarrázaval 0000, depto 000",
    "sale_price_amount": 4800,
    "sale_price_currency": "UF",
    "rent_price_amount": null,
    "rent_price_currency": null,
    "common_expenses_clp": 120000,
    "property_tax_clp": 85000,
    "bedrooms": 2,
    "bathrooms": 2,
    "usable_area_m2": 62,
    "total_area_m2": 70,
    "parking_spaces": 1,
    "storage_units": 1,
    "orientation": "norte",
    "floor": 8,
    "year_built": 2018,
    "furnished": false,
    "pets_allowed": true,
    "photos": [
      "https://example.com/i-12/1.jpg"
    ],
    "broker_user_id": "0199e3a0-0000-7000-8000-0000000000bb",
    "owner_name": "Propietaria de ejemplo",
    "owner_phone": "+56900000000",
    "owner_email": "[email protected]",
    "source": "manual",
    "external_ref": null,
    "protected_fields": [],
    "created_by": "0199e3a0-0000-7000-8000-0000000000bb",
    "created_at": "2026-10-14T12:00:00.000Z",
    "updated_at": "2026-10-14T12:00:00.000Z",
    "sale_price": {
      "amount": 4800,
      "currency": "UF",
      "amount_clp": 189120000,
      "amount_uf": 4800
    },
    "rent_price": null
  }
}

Answers: 201 · 400 · 401 · 403 · 404 · 409 · 429

DELETE /properties/{id}

Remove a property from the cartera

Takes the property out of the cartera and out of every search, card and Instagram link. To take it off the market but keep it, pause it instead. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
idpathstringyesmín. 1, máx. 64
curl -X DELETE https://api.vitrinadev.com/api/v1/properties/<id> \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (200)

{
  "data": {
    "id": "0199e3a0-0000-7000-8000-000000000001",
    "display_id": "I-12",
    "deleted": true
  }
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

GET /properties/{id}

One property

id is the uuid or the display id (I-12). Includes the private fields (dirección, propietario) — this is the broker’s surface, not the agent’s. Requires marketplace:read. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
idpathstringyesmín. 1, máx. 64
curl https://api.vitrinadev.com/api/v1/properties/<id> \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (200)

{
  "data": {
    "id": "0199e3a0-0000-7000-8000-000000000001",
    "tenant_id": "0199e3a0-0000-7000-8000-0000000000aa",
    "display_id": "I-12",
    "title": "Departamento 2D2B con terraza, metro Irarrázaval",
    "description": "Luminoso, orientación norte, a pasos del metro.",
    "operation": "venta",
    "property_type": "departamento",
    "status": "disponible",
    "region": "Metropolitana",
    "comuna": "Ñuñoa",
    "sector": "Plaza Ñuñoa",
    "address": "Av. Irarrázaval 0000, depto 000",
    "sale_price_amount": 4800,
    "sale_price_currency": "UF",
    "rent_price_amount": null,
    "rent_price_currency": null,
    "common_expenses_clp": 120000,
    "property_tax_clp": 85000,
    "bedrooms": 2,
    "bathrooms": 2,
    "usable_area_m2": 62,
    "total_area_m2": 70,
    "parking_spaces": 1,
    "storage_units": 1,
    "orientation": "norte",
    "floor": 8,
    "year_built": 2018,
    "furnished": false,
    "pets_allowed": true,
    "photos": [
      "https://example.com/i-12/1.jpg"
    ],
    "broker_user_id": "0199e3a0-0000-7000-8000-0000000000bb",
    "owner_name": "Propietaria de ejemplo",
    "owner_phone": "+56900000000",
    "owner_email": "[email protected]",
    "source": "manual",
    "external_ref": null,
    "protected_fields": [],
    "created_by": "0199e3a0-0000-7000-8000-0000000000bb",
    "created_at": "2026-10-14T12:00:00.000Z",
    "updated_at": "2026-10-14T12:00:00.000Z",
    "sale_price": {
      "amount": 4800,
      "currency": "UF",
      "amount_clp": 189120000,
      "amount_uf": 4800
    },
    "rent_price": null
  }
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

PATCH /properties/{id}

Edit a property (pause it with status: pausada)

Partial update. On a property that came from a portal or an import, every field this edit changes is protected: no later sync overwrites it until it is released (protected_fields, ADR 0023). Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
idpathstringyesmín. 1, máx. 64
curl -X PATCH https://api.vitrinadev.com/api/v1/properties/<id> \
  -H "Authorization: Bearer $VITRINA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "pausada"
  }'

Example response (200)

{
  "data": {
    "id": "0199e3a0-0000-7000-8000-000000000001",
    "tenant_id": "0199e3a0-0000-7000-8000-0000000000aa",
    "display_id": "I-12",
    "title": "Departamento 2D2B con terraza, metro Irarrázaval",
    "description": "Luminoso, orientación norte, a pasos del metro.",
    "operation": "venta",
    "property_type": "departamento",
    "status": "disponible",
    "region": "Metropolitana",
    "comuna": "Ñuñoa",
    "sector": "Plaza Ñuñoa",
    "address": "Av. Irarrázaval 0000, depto 000",
    "sale_price_amount": 4800,
    "sale_price_currency": "UF",
    "rent_price_amount": null,
    "rent_price_currency": null,
    "common_expenses_clp": 120000,
    "property_tax_clp": 85000,
    "bedrooms": 2,
    "bathrooms": 2,
    "usable_area_m2": 62,
    "total_area_m2": 70,
    "parking_spaces": 1,
    "storage_units": 1,
    "orientation": "norte",
    "floor": 8,
    "year_built": 2018,
    "furnished": false,
    "pets_allowed": true,
    "photos": [
      "https://example.com/i-12/1.jpg"
    ],
    "broker_user_id": "0199e3a0-0000-7000-8000-0000000000bb",
    "owner_name": "Propietaria de ejemplo",
    "owner_phone": "+56900000000",
    "owner_email": "[email protected]",
    "source": "manual",
    "external_ref": null,
    "protected_fields": [],
    "created_by": "0199e3a0-0000-7000-8000-0000000000bb",
    "created_at": "2026-10-14T12:00:00.000Z",
    "updated_at": "2026-10-14T12:00:00.000Z",
    "sale_price": {
      "amount": 4800,
      "currency": "UF",
      "amount_clp": 189120000,
      "amount_uf": 4800
    },
    "rent_price": null
  }
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

GET /properties/{id}/publications

A property’s listings on the portals

One row per portal account the property is listed on, with the portal’s own state for the listing (portal_state: listed, paused, withdrawn, moderated). A listing paused or closed on the portal never changes the property’s status. Requires marketplace:read. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
idpathstringyesmín. 1, máx. 64
curl https://api.vitrinadev.com/api/v1/properties/<id>/publications \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (200)

{
  "data": [
    {
      "id": "0199e3a0-0000-7000-8000-0000000000dd",
      "property_id": "0199e3a0-0000-7000-8000-000000000001",
      "marketplace_account_id": "0199e3a0-0000-7000-8000-0000000000cc",
      "provider": "mercadolibre",
      "external_id": "MLC1500000001",
      "status": "imported",
      "origin": "portal",
      "permalink": "https://www.portalinmobiliario.com/MLC-1500000001",
      "listing_type": "silver",
      "portal_state": "paused",
      "portal_state_at": "2026-10-14T18:20:00.000Z",
      "last_synced_at": "2026-10-15T09:00:00.000Z",
      "last_published_at": null,
      "last_error": null,
      "created_at": "2026-10-14T12:00:00.000Z",
      "updated_at": "2026-10-15T09:00:00.000Z"
    }
  ]
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

POST /properties/{id}/publications

Publish a property to Portal Inmobiliario

Lists the property on the account: the category from its tipo and operación, the price in UF (sent as CLF) or CLP, its attributes, comuna and dirección, up to 30 photos, the description, and the workspace WhatsApp line as the contact button. The tier comes from the packs the account holds (a publication pack is mandatory). Publishing again refreshes the live listing (outcome: updated). After that, the listing follows the property: edits are pushed, pausada pauses it, back on the market re-activates it, and vendida / arrendada or removing the property closes it (closed is final on the portal). Errors (422), each with field_errors keyed by the property field to fix: portal_no_package (no pack with cupos for the tier; details.tiers lists what the account has), portal_listing_incomplete (nothing was sent), portal_listing_rejected (the portal refused it; details.causes verbatim). 409 when the property already has a listing on this account that the import found on the portal. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
idpathstringyesmín. 1, máx. 64

Body

FieldTypeRequiredConstraints
account_iduuidyes
listing_typesilver \gold \gold_premium
operationventa \arriendo—
curl -X POST https://api.vitrinadev.com/api/v1/properties/<id>/publications \
  -H "Authorization: Bearer $VITRINA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "0199e3a0-0000-7000-8000-0000000000cc",
    "listing_type": "silver"
  }'

Example response (201)

{
  "data": {
    "outcome": "published",
    "publication": {
      "id": "0199e3a0-0000-7000-8000-0000000000dd",
      "property_id": "0199e3a0-0000-7000-8000-000000000001",
      "marketplace_account_id": "0199e3a0-0000-7000-8000-0000000000cc",
      "provider": "mercadolibre",
      "external_id": "MLC1500000001",
      "status": "published",
      "origin": "vitrina",
      "permalink": "https://www.portalinmobiliario.com/MLC-1500000001",
      "listing_type": "silver",
      "portal_state": "listed",
      "portal_state_at": "2026-10-14T18:20:00.000Z",
      "last_synced_at": "2026-10-15T09:00:00.000Z",
      "last_published_at": "2026-10-15T12:00:00.000Z",
      "last_error": null,
      "created_at": "2026-10-14T12:00:00.000Z",
      "updated_at": "2026-10-15T09:00:00.000Z"
    }
  }
}

Answers: 201 · 400 · 401 · 403 · 404 · 409 · 429

DELETE /properties/{id}/publications/{publicationId}

Close a listing on the portal

Closes the listing on Portal Inmobiliario (final there: publishing again creates a new listing). The property and its status are untouched. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
idpathstringyesmín. 1, máx. 64
publicationIdpathuuidyes
curl -X DELETE https://api.vitrinadev.com/api/v1/properties/<id>/publications/<id> \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (200)

{
  "data": {
    "id": "0199e3a0-0000-7000-8000-0000000000dd",
    "property_id": "0199e3a0-0000-7000-8000-000000000001",
    "marketplace_account_id": "0199e3a0-0000-7000-8000-0000000000cc",
    "provider": "mercadolibre",
    "external_id": "MLC1500000001",
    "status": "deleted",
    "origin": "vitrina",
    "permalink": "https://www.portalinmobiliario.com/MLC-1500000001",
    "listing_type": "silver",
    "portal_state": "withdrawn",
    "portal_state_at": "2026-10-14T18:20:00.000Z",
    "last_synced_at": "2026-10-15T09:00:00.000Z",
    "last_published_at": "2026-10-15T12:00:00.000Z",
    "last_error": null,
    "created_at": "2026-10-14T12:00:00.000Z",
    "updated_at": "2026-10-15T09:00:00.000Z"
  }
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

POST /properties/{id}/release-fields

Let protected fields follow the source again

Removes the named fields from protected_fields, so the next portal or import sync may overwrite them. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
idpathstringyesmín. 1, máx. 64

Body

FieldTypeRequiredConstraints
fieldsstring[]yes
curl -X POST https://api.vitrinadev.com/api/v1/properties/<id>/release-fields \
  -H "Authorization: Bearer $VITRINA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "fields": [
      "sale_price_amount"
    ]
  }'

Example response (200)

{
  "data": {
    "id": "0199e3a0-0000-7000-8000-000000000001",
    "tenant_id": "0199e3a0-0000-7000-8000-0000000000aa",
    "display_id": "I-12",
    "title": "Departamento 2D2B con terraza, metro Irarrázaval",
    "description": "Luminoso, orientación norte, a pasos del metro.",
    "operation": "venta",
    "property_type": "departamento",
    "status": "disponible",
    "region": "Metropolitana",
    "comuna": "Ñuñoa",
    "sector": "Plaza Ñuñoa",
    "address": "Av. Irarrázaval 0000, depto 000",
    "sale_price_amount": 4800,
    "sale_price_currency": "UF",
    "rent_price_amount": null,
    "rent_price_currency": null,
    "common_expenses_clp": 120000,
    "property_tax_clp": 85000,
    "bedrooms": 2,
    "bathrooms": 2,
    "usable_area_m2": 62,
    "total_area_m2": 70,
    "parking_spaces": 1,
    "storage_units": 1,
    "orientation": "norte",
    "floor": 8,
    "year_built": 2018,
    "furnished": false,
    "pets_allowed": true,
    "photos": [
      "https://example.com/i-12/1.jpg"
    ],
    "broker_user_id": "0199e3a0-0000-7000-8000-0000000000bb",
    "owner_name": "Propietaria de ejemplo",
    "owner_phone": "+56900000000",
    "owner_email": "[email protected]",
    "source": "manual",
    "external_ref": null,
    "protected_fields": [],
    "created_by": "0199e3a0-0000-7000-8000-0000000000bb",
    "created_at": "2026-10-14T12:00:00.000Z",
    "updated_at": "2026-10-14T12:00:00.000Z",
    "sale_price": {
      "amount": 4800,
      "currency": "UF",
      "amount_clp": 189120000,
      "amount_uf": 4800
    },
    "rent_price": null
  }
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

GET /properties/portals

Connected portal accounts and their import

The workspace’s Portal Inmobiliario (Mercado Libre) accounts: how many properties of the cartera each one lists, split by portal state, and the last import run with its counts. Requires marketplace:read. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

curl https://api.vitrinadev.com/api/v1/properties/portals \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (200)

{
  "data": [
    {
      "id": "0199e3a0-0000-7000-8000-0000000000cc",
      "provider": "mercadolibre",
      "portal": "portal_inmobiliario",
      "name": "Mercado Libre – CORREDORA_DEMO",
      "seller_nickname": "CORREDORA_DEMO",
      "enabled": true,
      "sync_enabled": true,
      "connected_at": "2026-10-14T12:00:00.000Z",
      "properties": {
        "total": 6,
        "listed": 5,
        "paused": 1,
        "other": 0
      },
      "last_run": {
        "id": "0199e3a0-0000-7000-8000-0000000000ee",
        "status": "success",
        "started_at": "2026-10-15T09:00:00.000Z",
        "finished_at": "2026-10-15T09:00:12.000Z",
        "error_message": null,
        "summary": {
          "seen": 6,
          "created": 0,
          "updated": 1,
          "unchanged": 5,
          "skipped": 0,
          "not_real_estate": 0,
          "removed_by_broker": 0,
          "confirmed_absent": 0,
          "portal_states": {
            "listed": 5,
            "paused": 1
          },
          "truncated": false
        }
      }
    }
  ]
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

DELETE /properties/portals/{accountId}

Disconnect a portal account

Removes the connection and its listing records. The properties it imported stay in the cartera. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
accountIdpathuuidyes
curl -X DELETE https://api.vitrinadev.com/api/v1/properties/portals/<id> \
  -H "Authorization: Bearer $VITRINA_KEY"

Answers: 204 · 400 · 401 · 403 · 404 · 409 · 429

GET /properties/portals/{accountId}/listing-tiers

Listing tiers the account’s packs allow

The tiers the account can publish with right now, read from its active Mercado Libre packs, with cupos left. Empty data = no pack: publishing answers portal_no_package. Requires marketplace:read. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
accountIdpathuuidyes
curl https://api.vitrinadev.com/api/v1/properties/portals/<id>/listing-tiers \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (200)

{
  "data": [
    {
      "listing_type": "silver",
      "via": "publication",
      "remaining": 37
    },
    {
      "listing_type": "gold",
      "via": "upgrade",
      "remaining": 5
    }
  ]
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

POST /properties/portals/{accountId}/sync

Import the account’s listings now

Queues an import of every active and paused listing of the account into the cartera (also runs every 6 hours). Re-running an unchanged account changes nothing; a field the broker edited in Vitrina is never overwritten; the property’s status is never written. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

ParameterInTypeRequiredConstraints
accountIdpathuuidyes
curl -X POST https://api.vitrinadev.com/api/v1/properties/portals/<id>/sync \
  -H "Authorization: Bearer $VITRINA_KEY"

Example response (202)

{
  "data": {
    "enqueued": true
  }
}

Answers: 202 · 400 · 401 · 403 · 404 · 409 · 429

POST /properties/portals/mercadolibre/connect

Start connecting Portal Inmobiliario

Returns Mercado Libre’s consent URL (Portal Inmobiliario is Mercado Libre’s real-estate site; the broker signs in with their Mercado Libre account). After consent the browser returns to return_to with status=connected, and the first import runs at the next scheduler tick (≤ 15 minutes), or right away with POST /properties/portals/\{accountId\}/sync. 503 MERCADOLIBRE_NOT_CONFIGURED when the platform has no Mercado Libre app. Requires marketplace:write. Only on a workspace whose vertical is real-estate; any other answers 403 VERTICAL_NOT_ENABLED.

Body

FieldTypeRequiredConstraints
return_tostring—uri, máx. 2000
curl -X POST https://api.vitrinadev.com/api/v1/properties/portals/mercadolibre/connect \
  -H "Authorization: Bearer $VITRINA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "return_to": "https://example.com/vuelta-del-consentimiento"
  }'

Example response (200)

{
  "data": {
    "authorize_url": "https://auth.mercadolibre.cl/authorization?response_type=code&client_id=…"
  }
}

Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429

On this page