[{"data":1,"prerenderedAt":932},["ShallowReactive",2],{"page:\u002Fquickstart":3,"operation:getApiKeyContext":266,"operation:listProperties":342},{"id":4,"title":5,"body":6,"description":256,"extension":257,"meta":258,"navigation":259,"operation":260,"path":261,"rawbody":262,"seo":263,"stem":264,"__hash__":265},"docs\u002Fquickstart.md","Quickstart",{"type":7,"value":8,"toc":246},"minimark",[9,22,214,219,242],[10,11,12,13,17,18,21],"p",{},"This guide takes you from no credentials to a working API call. You need a Vestta workspace on the ",[14,15,16],"strong",{},"Premium"," or ",[14,19,20],{},"Enterprise"," plan and a user with permission to manage API keys.",[23,24,25,30,47,82,86,93,103,106,133,137,145,149,153,164,167,178,182,188,191,194],"steps",{},[26,27,29],"h3",{"id":28},"create-an-api-key","Create an API key",[10,31,32,33,42,43,46],{},"In Vestta, open ",[34,35,39],"a",{"href":36,"rel":37},"https:\u002F\u002Fcrm.vestta.io\u002Fsettings?page=apis",[38],"nofollow",[14,40,41],{},"Settings → API"," and select ",[14,44,45],{},"Nueva API Key",". The Vestta app is in Spanish; the fields are:",[48,49,50,62,68],"ul",{},[51,52,53,56,57,61],"li",{},[14,54,55],{},"Nombre"," — where the key will be used, for example ",[58,59,60],"code",{},"Website",".",[51,63,64,67],{},[14,65,66],{},"Duración"," — how long the key stays valid: 1, 3, 6 or 12 months.",[51,69,70,73,74,77,78,81],{},[14,71,72],{},"Permisos"," — the scopes. For this guide, select ",[14,75,76],{},"Propiedades"," (",[58,79,80],{},"properties:read",").",[26,83,85],{"id":84},"save-the-key-securely","Save the key securely",[10,87,88,89,92],{},"The full key is shown ",[14,90,91],{},"only once",", right after you create it. It has this format:",[94,95,101],"pre",{"className":96,"code":98,"language":99,"meta":100},[97],"language-text","AC_LIVE_\u003Ckey_id>.\u003Csecret>\n","text","",[58,102,98],{"__ignoreMap":100},[10,104,105],{},"Store it in a secret manager or an environment variable on your server. Never put it in front-end code or commit it to a repository. For this guide, export it in your terminal:",[94,107,111],{"className":108,"code":109,"language":110,"meta":100,"style":100},"language-bash shiki shiki-themes github-light","export VESTTA_API_KEY=\"AC_LIVE_...\"\n","bash",[58,112,113],{"__ignoreMap":100},[114,115,118,122,126,129],"span",{"class":116,"line":117},"line",1,[114,119,121],{"class":120},"sD7c4","export",[114,123,125],{"class":124},"sgsFI"," VESTTA_API_KEY",[114,127,128],{"class":120},"=",[114,130,132],{"class":131},"sYBdl","\"AC_LIVE_...\"\n",[26,134,136],{"id":135},"make-your-first-request","Make your first request",[10,138,139,140,144],{},"Call ",[34,141,143],{"href":142},"\u002Fme","Retrieve key context",". It works with any active key and returns the business and scopes behind it, which makes it the safest first call:",[146,147],"api-request",{"operation":148},"getApiKeyContext",[26,150,152],{"id":151},"inspect-the-response","Inspect the response",[10,154,155,156,159,160,163],{},"A ",[58,157,158],{},"200"," response confirms the key works. Check that ",[58,161,162],{},"scopes"," contains everything your integration needs:",[165,166],"api-response-example",{"operation":148},[10,168,169,170,173,174,61],{},"If you get a ",[58,171,172],{},"401"," instead, the body tells you why — a missing header, a typo in the key, or a revoked or expired key. See ",[34,175,177],{"href":176},"\u002Ferrors#authentication-failures","Errors",[26,179,181],{"id":180},"continue-with-properties-or-leads","Continue with Properties or Leads",[10,183,184,185,187],{},"With ",[58,186,80],{}," granted, list the first page of your public catalogue:",[146,189],{"operation":190},"listProperties",[10,192,193],{},"From here, go deeper into the resource you need:",[48,195,196,203],{},[51,197,198,202],{},[34,199,201],{"href":200},"\u002Fproperties","Properties"," — filters, prices, map areas and the property object.",[51,204,205,209,210,213],{},[34,206,208],{"href":207},"\u002Fleads","Leads"," — read leads, or send them from your forms with the ",[58,211,212],{},"leads:ingest"," scope.",[215,216,218],"h2",{"id":217},"next-steps","Next steps",[48,220,221,228,235],{},[51,222,223,227],{},[34,224,226],{"href":225},"\u002Fauthentication","Authentication"," — both supported headers and what each scope unlocks.",[51,229,230,234],{},[34,231,233],{"href":232},"\u002Fapi-keys","API keys"," — expiry, revocation and rotating a key without downtime.",[51,236,237,241],{},[34,238,240],{"href":239},"\u002Fpagination","Pagination"," — walk through every page of a list.",[243,244,245],"style",{},"html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":100,"searchDepth":247,"depth":247,"links":248},3,[249,250,251,252,253,254],{"id":28,"depth":247,"text":29},{"id":84,"depth":247,"text":85},{"id":135,"depth":247,"text":136},{"id":151,"depth":247,"text":152},{"id":180,"depth":247,"text":181},{"id":217,"depth":255,"text":218},2,"Create an API key and make your first authenticated request to the Vestta API.","md",{},true,null,"\u002Fquickstart","---\ntitle: Quickstart\ndescription: Create an API key and make your first authenticated request to the Vestta API.\n---\n\nThis guide takes you from no credentials to a working API call. You need a Vestta workspace on the **Premium** or **Enterprise** plan and a user with permission to manage API keys.\n\n:::steps\n### Create an API key\n\nIn Vestta, open [**Settings → API**](https:\u002F\u002Fcrm.vestta.io\u002Fsettings?page=apis) and select **Nueva API Key**. The Vestta app is in Spanish; the fields are:\n\n- **Nombre** — where the key will be used, for example `Website`.\n- **Duración** — how long the key stays valid: 1, 3, 6 or 12 months.\n- **Permisos** — the scopes. For this guide, select **Propiedades** (`properties:read`).\n\n### Save the key securely\n\nThe full key is shown **only once**, right after you create it. It has this format:\n\n```text\nAC_LIVE_\u003Ckey_id>.\u003Csecret>\n```\n\nStore it in a secret manager or an environment variable on your server. Never put it in front-end code or commit it to a repository. For this guide, export it in your terminal:\n\n```bash\nexport VESTTA_API_KEY=\"AC_LIVE_...\"\n```\n\n### Make your first request\n\nCall [Retrieve key context](\u002Fme). It works with any active key and returns the business and scopes behind it, which makes it the safest first call:\n\n::api-request{operation=\"getApiKeyContext\"}\n::\n\n### Inspect the response\n\nA `200` response confirms the key works. Check that `scopes` contains everything your integration needs:\n\n::api-response-example{operation=\"getApiKeyContext\"}\n::\n\nIf you get a `401` instead, the body tells you why — a missing header, a typo in the key, or a revoked or expired key. See [Errors](\u002Ferrors#authentication-failures).\n\n### Continue with Properties or Leads\n\nWith `properties:read` granted, list the first page of your public catalogue:\n\n::api-request{operation=\"listProperties\"}\n::\n\nFrom here, go deeper into the resource you need:\n\n- [Properties](\u002Fproperties) — filters, prices, map areas and the property object.\n- [Leads](\u002Fleads) — read leads, or send them from your forms with the `leads:ingest` scope.\n:::\n\n## Next steps\n\n- [Authentication](\u002Fauthentication) — both supported headers and what each scope unlocks.\n- [API keys](\u002Fapi-keys) — expiry, revocation and rotating a key without downtime.\n- [Pagination](\u002Fpagination) — walk through every page of a list.\n",{"title":5,"description":256},"quickstart","rz22AarIe6-yUmOTBb496fi8MA1jNFXwCW5qFlIx2Ik",{"id":148,"method":267,"path":142,"fullPath":268,"summary":143,"tag":226,"scopes":269,"url":270,"description":271,"pathParams":272,"queryParams":273,"headerParams":274,"responses":275,"samples":326,"docsPath":142},"GET","\u002Fv1\u002Fme",[],"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fme","Returns the authenticated business and granted scopes. Any active key can call this operation.",[],[],[],[276,307,310,313,316,319,323],{"status":158,"description":277,"schemaName":278,"fields":279,"example":305,"exampleHtml":306},"Successful response.","CurrentApiKeyResponse",[280,287],{"name":281,"type":282,"required":259,"nullable":283,"enumValues":284,"constraints":286},"status","string",false,[285],"ok",[],{"name":288,"type":289,"required":259,"nullable":283,"constraints":290,"children":291},"user","ApiKeyContext",[],[292,296,300],{"name":293,"type":282,"required":283,"nullable":259,"description":294,"constraints":295},"company_name","Name of the business that owns the API key.",[],{"name":162,"type":297,"required":259,"nullable":283,"description":298,"constraints":299},"array of strings","Granted scopes: properties:read, properties:write, properties:publish, leads:read, leads:write, leads:ingest.",[],{"name":301,"type":282,"required":259,"nullable":283,"enumValues":302,"constraints":304},"auth_method",[303],"api_key",[],"{\n  \"status\": \"ok\",\n  \"user\": {\n    \"company_name\": \"Inmobiliaria Ejemplo\",\n    \"scopes\": [\n      \"properties:read\",\n      \"leads:read\"\n    ],\n    \"auth_method\": \"api_key\"\n  }\n}","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"status\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"ok\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"user\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"company_name\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Inmobiliaria Ejemplo\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"scopes\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">      \"properties:read\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">      \"leads:read\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    ],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"auth_method\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"api_key\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"status":172,"description":308,"schemaName":309},"The API key is missing, malformed, unknown, revoked or expired.","ExternalApiError",{"status":311,"description":312,"schemaName":309},"403","The API key lacks the required scope.",{"status":314,"description":315,"schemaName":309},"404","The resource does not exist in this business.",{"status":317,"description":318,"schemaName":309},"409","Duplicate contact or idempotency key reused with a different payload.",{"status":320,"description":321,"schemaName":322},"422","A path parameter, query parameter or body field is invalid.","ExternalValidationError",{"status":324,"description":325,"schemaName":309},"500","Unexpected server error while processing the request.",[327,332,337],{"id":328,"label":329,"lang":110,"code":330,"html":331},"curl","cURL","curl \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fme\" \\\n  -H \"X-Api-Key: $VESTTA_API_KEY\"","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fme\"\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"X-Api-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":333,"label":334,"lang":333,"code":335,"html":336},"javascript","JavaScript","const response = await fetch('https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fme', {\n  headers: { 'X-Api-Key': process.env.VESTTA_API_KEY },\n})\n\nconst data = await response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> response\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> fetch\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">(\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fme'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  headers: { \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'X-Api-Key'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: process.env.\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> data\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">json\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":338,"label":339,"lang":338,"code":340,"html":341},"python","Python","import os\n\nimport requests\n\nresponse = requests.get(\n    \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fme\",\n    headers={\"X-Api-Key\": os.environ[\"VESTTA_API_KEY\"]},\n)\nresponse.raise_for_status()\ndata = response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests.get(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">    \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fme\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">    headers\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"X-Api-Key\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"VESTTA_API_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]},\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response.raise_for_status()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">data \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.json()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":190,"method":267,"path":200,"fullPath":343,"summary":344,"tag":201,"scopes":345,"url":346,"description":347,"pathParams":348,"queryParams":349,"headerParams":419,"responses":420,"samples":921,"docsPath":931},"\u002Fv1\u002Fproperties","List published properties",[80],"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties","Lists the public catalogue. Requires the `properties:read` scope.",[],[350,358,364,367,371,378,382,386,390,394,399,403,407,412],{"name":351,"type":352,"required":283,"nullable":283,"description":353,"defaultValue":354,"constraints":355},"limit","integer","Maximum number of properties to return.","100",[356,357],"≥ 1","≤ 1000",{"name":359,"type":352,"required":283,"nullable":283,"description":360,"defaultValue":361,"constraints":362},"offset","Number of matching properties to skip before returning results.","0",[363],"≥ 0",{"name":281,"type":282,"required":283,"nullable":259,"description":365,"constraints":366},"Exact commercial status match. Only explicitly published properties are returned; drafts are excluded.",[],{"name":368,"type":282,"required":283,"nullable":259,"description":369,"constraints":370},"operation","Operation: `venta`, `alquiler` or `traspaso`. Case-insensitive partial match, so properties offered for several operations match each of them. Also selects which price `min_price`, `max_price` and `sort` use.",[],{"name":372,"type":282,"required":283,"nullable":259,"description":373,"enumValues":374,"constraints":377},"rental_type","Rental type: `temporal` for temporary rentals, `anual` for long-term rentals that are neither temporary nor holiday rentals.",[375,376],"temporal","anual",[],{"name":379,"type":282,"required":283,"nullable":259,"description":380,"constraints":381},"type","Exact property type: `apartamento`, `casa`, `local`, `nave`, `almacenaje`, `oficina`, `terreno`, `aparcamiento` or `edificio`.",[],{"name":383,"type":282,"required":283,"nullable":259,"description":384,"constraints":385},"subtype","Exact subtype key as stored in Vestta, for example `atico`, `duplex`, `chalet` or `villa`. Responses return the subtype as a display label.",[],{"name":387,"type":282,"required":283,"nullable":259,"description":388,"constraints":389},"city","City name. Case-insensitive exact match.",[],{"name":391,"type":282,"required":283,"nullable":259,"description":392,"constraints":393},"locations","URL-encoded JSON array of map areas. Supports `circle` (center + radius in metres), `polygon`\u002F`rectangle` (coordinates) and `point`\u002F`marker` (500 m default radius). Invalid JSON is ignored.",[],{"name":395,"type":396,"required":283,"nullable":259,"description":397,"constraints":398},"min_price","number","Minimum price, inclusive. Uses the rent or transfer price when `operation` is `alquiler` or `traspaso`.",[363],{"name":400,"type":396,"required":283,"nullable":259,"description":401,"constraints":402},"max_price","Maximum price, inclusive. Uses the rent or transfer price when `operation` is `alquiler` or `traspaso`.",[363],{"name":404,"type":352,"required":283,"nullable":259,"description":405,"constraints":406},"min_bedrooms","Minimum number of bedrooms, inclusive.",[363],{"name":408,"type":409,"required":283,"nullable":259,"description":410,"constraints":411},"is_featured","boolean","`true` returns only featured properties; `false` only non-featured ones.",[],{"name":413,"type":282,"required":283,"nullable":259,"description":414,"enumValues":415,"constraints":418},"sort","Sort by price (properties without a price go last). When omitted, results are ordered by last update, newest first.",[416,417],"price_asc","price_desc",[],[],[421,915,916,917,918,919,920],{"status":158,"description":277,"schemaName":422,"fields":423,"example":913,"exampleHtml":914},"PropertyListResponse",[424,427,895,899,902,905,910],{"name":281,"type":282,"required":259,"nullable":283,"enumValues":425,"constraints":426},[285],[],{"name":428,"type":429,"required":259,"nullable":283,"description":430,"constraints":431,"children":432},"data","array of objects","The requested page of properties.",[],[433,437,440,443,446,450,454,458,461,464,468,472,493,515,841,861,864,868,870,873,876,880,884,887,891],{"name":434,"type":352,"required":259,"nullable":283,"description":435,"constraints":436},"id","Numeric property ID. Use it with Retrieve a property.",[],{"name":368,"type":282,"required":283,"nullable":259,"description":438,"constraints":439},"Operations the property is offered for: `venta`, `alquiler`, `traspaso`, or several joined by commas (e.g. `venta,alquiler`).",[],{"name":379,"type":282,"required":283,"nullable":259,"description":441,"constraints":442},"Property type key, e.g. `apartamento`, `casa`, `local`, `oficina`, `terreno` or `edificio`.",[],{"name":383,"type":282,"required":283,"nullable":259,"description":444,"constraints":445},"Subtype as a Spanish display label (e.g. `Ático`, `Local Comercial`), or `Sin Especificar`.",[],{"name":447,"type":282,"required":283,"nullable":259,"description":448,"constraints":449},"title","Listing title. May be empty.",[],{"name":451,"type":396,"required":283,"nullable":259,"description":452,"constraints":453},"price","Sale price in euros. Rent and transfer prices are in `specs.price_calc`.",[],{"name":455,"type":396,"required":283,"nullable":259,"description":456,"constraints":457},"size_total","Total size in m².",[],{"name":459,"type":352,"required":283,"nullable":259,"constraints":460},"bedrooms",[],{"name":462,"type":352,"required":283,"nullable":259,"constraints":463},"bathrooms",[],{"name":465,"type":282,"required":283,"nullable":259,"description":466,"constraints":467},"postal_code","Omitted when the property's location is hidden.",[],{"name":469,"type":282,"required":283,"nullable":259,"description":470,"constraints":471},"description","Listing description as HTML.",[],{"name":473,"type":429,"required":283,"nullable":283,"description":474,"constraints":475,"children":476},"images","Opaque public copies. New photos are watermarked; legacy copies may remain unmarked. Original paths and IDs are never included.",[],[477,479,483,487,491],{"name":434,"type":282,"required":259,"nullable":283,"constraints":478},[],{"name":480,"type":282,"required":259,"nullable":283,"description":481,"constraints":482},"url","Permanent opaque public-copy URL. New photos are watermarked; migrated legacy copies may remain unmarked. Never an original or upload URL.",[],{"name":484,"type":352,"required":283,"nullable":283,"defaultValue":485,"constraints":486},"order","1",[],{"name":488,"type":409,"required":283,"nullable":283,"defaultValue":489,"constraints":490},"is_primary","false",[],{"name":447,"type":282,"required":283,"nullable":283,"defaultValue":100,"constraints":492},[],{"name":494,"type":429,"required":283,"nullable":259,"description":495,"constraints":496,"children":497},"videos","Processed public videos.",[],[498,500,502,504,506,509,512],{"name":434,"type":282,"required":259,"nullable":283,"constraints":499},[],{"name":447,"type":282,"required":283,"nullable":259,"constraints":501},[],{"name":484,"type":352,"required":283,"nullable":259,"constraints":503},[],{"name":480,"type":282,"required":283,"nullable":259,"constraints":505},[],{"name":507,"type":282,"required":283,"nullable":259,"constraints":508},"hls_url",[],{"name":510,"type":282,"required":283,"nullable":259,"constraints":511},"thumbnail_url",[],{"name":513,"type":282,"required":283,"nullable":259,"constraints":514},"embed_url",[],{"name":516,"type":517,"required":283,"nullable":259,"description":518,"constraints":519,"children":520},"specs","PublicationSpecs","Listing characteristics. Keys depend on the property type. `price_calc.price_alq` and `price_calc.price_trasp` hold the monthly rent and transfer price; `address_privacy` is `public`, `approximate` or `hidden`; `building_name` is only present when the address is public.",[],[521,584,588,592,596,600,604,608,612,616,620,624,628,632,636,640,644,648,652,656,661,665,669,673,677,681,685,689,693,697,701,705,709,713,717,721,725,728,732,736,740,744,748,752,756,760,764,768,782,808,826,837],{"name":522,"type":523,"required":283,"nullable":259,"description":524,"constraints":525,"children":526},"translations","TranslationSpec","Traducciones de las descripciones",[],[527,539,548,557,566,575],{"name":528,"type":529,"required":283,"nullable":259,"description":530,"constraints":531,"children":532},"ca","TranslatedDescription","Traduccion en catalán de la descripción",[],[533,536],{"name":447,"type":282,"required":283,"nullable":259,"description":534,"constraints":535},"Título de la descripción",[],{"name":469,"type":282,"required":283,"nullable":259,"description":537,"constraints":538},"Descripción",[],{"name":540,"type":529,"required":283,"nullable":259,"description":541,"constraints":542,"children":543},"en","Traduccion en ingles de la descripción",[],[544,546],{"name":447,"type":282,"required":283,"nullable":259,"description":534,"constraints":545},[],{"name":469,"type":282,"required":283,"nullable":259,"description":537,"constraints":547},[],{"name":549,"type":529,"required":283,"nullable":259,"description":550,"constraints":551,"children":552},"fr","Traduccion en francés de la descripción",[],[553,555],{"name":447,"type":282,"required":283,"nullable":259,"description":534,"constraints":554},[],{"name":469,"type":282,"required":283,"nullable":259,"description":537,"constraints":556},[],{"name":558,"type":529,"required":283,"nullable":259,"description":559,"constraints":560,"children":561},"de","Traduccion en alemán de la descripción",[],[562,564],{"name":447,"type":282,"required":283,"nullable":259,"description":534,"constraints":563},[],{"name":469,"type":282,"required":283,"nullable":259,"description":537,"constraints":565},[],{"name":567,"type":529,"required":283,"nullable":259,"description":568,"constraints":569,"children":570},"pt","Traduccion en portuges de la descripción",[],[571,573],{"name":447,"type":282,"required":283,"nullable":259,"description":534,"constraints":572},[],{"name":469,"type":282,"required":283,"nullable":259,"description":537,"constraints":574},[],{"name":576,"type":529,"required":283,"nullable":259,"description":577,"constraints":578,"children":579},"it","Traduccion en italiano de la descripción",[],[580,582],{"name":447,"type":282,"required":283,"nullable":259,"description":534,"constraints":581},[],{"name":469,"type":282,"required":283,"nullable":259,"description":537,"constraints":583},[],{"name":585,"type":396,"required":283,"nullable":259,"description":586,"constraints":587},"usable_area","Metros cuadrados útiles",[363],{"name":589,"type":396,"required":283,"nullable":259,"description":590,"constraints":591},"plot_size","Metros cuadrados parcela",[363],{"name":593,"type":396,"required":283,"nullable":259,"description":594,"constraints":595},"size_built","Superficie construida",[363],{"name":597,"type":396,"required":283,"nullable":259,"description":598,"constraints":599},"porch_size","Metros cuadrados porche",[363],{"name":601,"type":396,"required":283,"nullable":259,"description":602,"constraints":603},"size_terraces","Metros cuadrados terrazas",[363],{"name":605,"type":396,"required":283,"nullable":259,"description":606,"constraints":607},"attic_size","Metros cuadrados ático",[363],{"name":609,"type":396,"required":283,"nullable":259,"description":610,"constraints":611},"storage_dimensions","Dimensiones del trastero",[],{"name":613,"type":352,"required":283,"nullable":259,"description":614,"constraints":615},"doble_bedrooms","Número de habitaciones dobles",[363],{"name":617,"type":352,"required":283,"nullable":259,"description":618,"constraints":619},"suite_bathrooms","Número de baños en suite",[363],{"name":621,"type":352,"required":283,"nullable":259,"description":622,"constraints":623},"num_terraces","Número de terrazas",[363],{"name":625,"type":282,"required":283,"nullable":259,"description":626,"constraints":627},"conservation","Estado de conservación",[],{"name":629,"type":282,"required":283,"nullable":259,"description":630,"constraints":631},"floor","Planta canónica para portales",[],{"name":633,"type":352,"required":283,"nullable":259,"description":634,"constraints":635},"house_floors","Número de plantas de una casa",[356],{"name":637,"type":409,"required":283,"nullable":259,"description":638,"constraints":639},"elevator","Tiene ascensor (0\u002F1 o Sí\u002FNo)",[],{"name":641,"type":282,"required":283,"nullable":259,"description":642,"constraints":643},"views","Vistas de la propiedad",[],{"name":645,"type":282,"required":283,"nullable":259,"description":646,"constraints":647},"orientation","Orientación (norte, sur, este, oeste)",[],{"name":649,"type":282,"required":283,"nullable":259,"description":650,"constraints":651},"energy_certificate","Certificado energético A-G",[],{"name":653,"type":282,"required":283,"nullable":259,"description":654,"constraints":655},"emissions","Emisiones A-G",[],{"name":657,"type":396,"required":283,"nullable":259,"description":658,"constraints":659},"energy_consumption_value","Consumo (kWh\u002Fm² año)",[356,660],"≤ 999",{"name":662,"type":396,"required":283,"nullable":259,"description":663,"constraints":664},"emissions_value","Emisiones (kg CO₂\u002Fm² año)",[356,660],{"name":666,"type":396,"required":283,"nullable":259,"description":667,"constraints":668},"height","Altura del local",[],{"name":670,"type":396,"required":283,"nullable":259,"description":671,"constraints":672},"facade_meters","Metros de fachada",[],{"name":674,"type":396,"required":283,"nullable":259,"description":675,"constraints":676},"meters_showcase","Metros de escaparate",[],{"name":678,"type":282,"required":283,"nullable":259,"description":679,"constraints":680},"entrace_type","Tipo de entrada de la oficina",[],{"name":682,"type":282,"required":283,"nullable":259,"description":683,"constraints":684},"position","1ª\u002F2ª Linea del mar",[],{"name":686,"type":352,"required":283,"nullable":259,"description":687,"constraints":688},"offices","Número de despachos",[363],{"name":690,"type":352,"required":283,"nullable":259,"description":691,"constraints":692},"meeting_rooms","Número de salas de reuniones",[363],{"name":694,"type":282,"required":283,"nullable":259,"description":695,"constraints":696},"camino","Tipo de suelo",[],{"name":698,"type":282,"required":283,"nullable":259,"description":699,"constraints":700},"terrain_extension","Tamaño (Grande\u002FPequeño)",[],{"name":702,"type":282,"required":283,"nullable":259,"description":703,"constraints":704},"topography","Topografía del terreno",[],{"name":706,"type":352,"required":283,"nullable":259,"description":707,"constraints":708},"num_seats","Número de plazas",[363],{"name":710,"type":282,"required":283,"nullable":259,"description":711,"constraints":712},"dimensions","Dimensiones del aparcamiento",[],{"name":714,"type":282,"required":283,"nullable":259,"description":715,"constraints":716},"turistic_license","Licencia turística",[],{"name":718,"type":352,"required":283,"nullable":259,"description":719,"constraints":720},"construction_year","Año de construcción",[],{"name":722,"type":282,"required":283,"nullable":259,"description":723,"constraints":724},"exposure","Interior o Exterior",[],{"name":243,"type":282,"required":283,"nullable":259,"description":726,"constraints":727},"Conservación",[],{"name":729,"type":352,"required":283,"nullable":259,"description":730,"constraints":731},"num_viviendas","Número de viviendas",[],{"name":733,"type":352,"required":283,"nullable":259,"description":734,"constraints":735},"num_locales","Número de locales",[],{"name":737,"type":352,"required":283,"nullable":259,"description":738,"constraints":739},"num_ascensores","Número de ascensores",[],{"name":741,"type":352,"required":283,"nullable":259,"description":742,"constraints":743},"num_parkings","Número de parkings incluidos",[363],{"name":745,"type":352,"required":283,"nullable":259,"description":746,"constraints":747},"num_floors","Número de plantas",[],{"name":749,"type":409,"required":283,"nullable":259,"description":750,"constraints":751},"luxury_property","Propiedad de lujo",[],{"name":753,"type":409,"required":283,"nullable":259,"description":754,"constraints":755},"holiday_renting","Alquiler vacacional",[],{"name":757,"type":409,"required":283,"nullable":259,"description":758,"constraints":759},"temporal_renting","Alquiler temporal",[],{"name":761,"type":409,"required":283,"nullable":259,"description":762,"constraints":763},"purchase_option_rental","Alquiler con opción a compra",[],{"name":765,"type":282,"required":283,"nullable":259,"description":766,"constraints":767},"address_privacy","Privacidad de la ubicación en portales: public | approximate | hidden",[],{"name":769,"type":770,"required":283,"nullable":259,"description":771,"constraints":772,"children":773},"activities","ActivitiesSpec","Actividades permitidas",[],[774,778],{"name":775,"type":297,"required":283,"nullable":283,"description":776,"constraints":777},"predefined","Actividades predefinidas",[],{"name":779,"type":297,"required":283,"nullable":283,"description":780,"constraints":781},"custom","Actividades personalizadas",[],{"name":783,"type":784,"required":283,"nullable":259,"description":785,"constraints":786,"children":787},"num_entrances","NumEntrancesSpec","Número de entradas",[],[788,792,796,800,804],{"name":789,"type":352,"required":283,"nullable":283,"description":790,"defaultValue":361,"constraints":791},"total","Total de entradas",[363],{"name":793,"type":352,"required":283,"nullable":283,"description":794,"defaultValue":361,"constraints":795},"peaton_entrances","Entradas de peatones",[363],{"name":797,"type":352,"required":283,"nullable":283,"description":798,"defaultValue":361,"constraints":799},"moto_entrances","Entradas de motos",[363],{"name":801,"type":352,"required":283,"nullable":283,"description":802,"defaultValue":361,"constraints":803},"van_entrances","Entradas de furgoneta",[363],{"name":805,"type":352,"required":283,"nullable":283,"description":806,"defaultValue":361,"constraints":807},"car_entrances","Entradas de coche",[363],{"name":809,"type":810,"required":283,"nullable":259,"description":811,"constraints":812,"children":813},"floor_breakdown","FloorBreakdownSpec","Desglose de plantas",[],[814,818,822],{"name":815,"type":352,"required":283,"nullable":283,"description":816,"defaultValue":361,"constraints":817},"base_floor","Metros ² de la planta baja",[],{"name":819,"type":352,"required":283,"nullable":283,"description":820,"defaultValue":361,"constraints":821},"first_floor","Metros ² de la primera planta",[],{"name":823,"type":352,"required":283,"nullable":283,"description":824,"defaultValue":361,"constraints":825},"second_floor","Metros ² de la segunda planta",[],{"name":827,"type":828,"required":283,"nullable":259,"constraints":829,"children":830},"price_calc","PublicPrices",[],[831,834],{"name":832,"type":396,"required":283,"nullable":259,"constraints":833},"price_alq",[363],{"name":835,"type":396,"required":283,"nullable":259,"constraints":836},"price_trasp",[363],{"name":838,"type":282,"required":283,"nullable":259,"description":839,"constraints":840},"building_name","Published only when address privacy is public.",[],{"name":842,"type":429,"required":283,"nullable":259,"description":843,"constraints":844,"children":845},"features","Typed amenities. `label` is a display string; `key` is stable.",[],[846,850,854,858],{"name":847,"type":282,"required":259,"nullable":283,"constraints":848},"key",[849],"1–100 chars",{"name":851,"type":282,"required":259,"nullable":283,"constraints":852},"label",[853],"1–200 chars",{"name":855,"type":856,"required":259,"nullable":283,"constraints":857},"value","string | boolean | integer | number",[],{"name":859,"type":409,"required":283,"nullable":283,"defaultValue":489,"constraints":860},"isextra",[],{"name":281,"type":282,"required":283,"nullable":259,"description":862,"constraints":863},"Commercial status of the explicitly published property. Drafts are never returned.",[],{"name":865,"type":282,"required":283,"nullable":259,"description":866,"constraints":867},"address","Follows the property's address privacy: the full address when public, the approximate address when approximate, omitted when hidden.",[],{"name":387,"type":282,"required":283,"nullable":259,"constraints":869},[],{"name":871,"type":282,"required":283,"nullable":259,"constraints":872},"province",[],{"name":874,"type":282,"required":283,"nullable":259,"constraints":875},"country",[],{"name":877,"type":396,"required":283,"nullable":259,"description":878,"constraints":879},"lat","Latitude in decimal degrees. Exact when the address is public, rounded to 2 decimals (about 1 km) when approximate, omitted when hidden.",[],{"name":881,"type":396,"required":283,"nullable":259,"description":882,"constraints":883},"lon","Longitude in decimal degrees, with the same precision rules as `lat`.",[],{"name":408,"type":409,"required":283,"nullable":259,"description":885,"constraints":886},"Whether the business marked the property as featured.",[],{"name":888,"type":282,"required":283,"nullable":259,"description":889,"constraints":890},"created_at","ISO 8601 timestamp with UTC offset.",[],{"name":892,"type":282,"required":283,"nullable":259,"description":893,"constraints":894},"updated_at","ISO 8601 timestamp with UTC offset. The default sort key.",[],{"name":896,"type":352,"required":259,"nullable":283,"description":897,"constraints":898},"count","Total number of properties matching the filters, across all pages.",[],{"name":351,"type":352,"required":259,"nullable":283,"description":900,"constraints":901},"The `limit` that was applied.",[],{"name":359,"type":352,"required":259,"nullable":283,"description":903,"constraints":904},"The `offset` that was applied.",[],{"name":906,"type":907,"required":259,"nullable":283,"description":908,"constraints":909},"filters","object","Echo of the filters that were applied; `null` for filters that were not sent. `locations` contains only the areas that were understood.",[],{"name":911,"type":282,"required":283,"nullable":259,"description":294,"constraints":912},"authenticated_as",[],"{\n  \"status\": \"ok\",\n  \"data\": [\n    {\n      \"id\": 1355,\n      \"operation\": \"traspaso,alquiler\",\n      \"type\": \"local\",\n      \"subtype\": \"Local Comercial\",\n      \"title\": \"Local comercial en el centro\",\n      \"price\": 0,\n      \"size_total\": 120,\n      \"bedrooms\": 0,\n      \"bathrooms\": 1,\n      \"postal_code\": \"07820\",\n      \"description\": \"\u003Ch2>Características del local\u003C\u002Fh2>\u003Cp>Superficie total de 120 m² en planta baja…\u003C\u002Fp>\",\n      \"images\": [\n        {\n          \"id\": \"7eac604ad45147d19c7cedb2a10569aa\",\n          \"url\": \"https:\u002F\u002Fcdn.vestta.io\u002Fmedia\u002F7eac604ad45147d19c7cedb2a10569aa.webp\",\n          \"order\": 1,\n          \"is_primary\": true\n        }\n      ],\n      \"videos\": [],\n      \"specs\": {\n        \"holiday_renting\": false,\n        \"temporal_renting\": false,\n        \"address_privacy\": \"approximate\",\n        \"price_calc\": {\n          \"price_alq\": 2000,\n          \"price_trasp\": 25000\n        }\n      },\n      \"features\": [\n        {\n          \"key\": \"air_conditioning\",\n          \"label\": \"Aire Acondicionado\",\n          \"value\": \"Sí\",\n          \"isextra\": false\n        }\n      ],\n      \"status\": \"disponible\",\n      \"address\": \"San Antonio\",\n      \"city\": \"San Antonio\",\n      \"province\": \"Islas Baleares\",\n      \"country\": \"España\",\n      \"lat\": 38.98,\n      \"lon\": 1.3,\n      \"is_featured\": false,\n      \"created_at\": \"2026-07-21T11:42:51.820440+02:00\",\n      \"updated_at\": \"2026-09-26T19:38:41.390976+02:00\"\n    }\n  ],\n  \"count\": 78,\n  \"limit\": 20,\n  \"offset\": 0,\n  \"filters\": {\n    \"locations\": [],\n    \"operation\": \"alquiler\"\n  },\n  \"authenticated_as\": \"Inmobiliaria Ejemplo\"\n}","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"status\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"ok\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"id\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1355\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"operation\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"traspaso,alquiler\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"type\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"local\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"subtype\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Local Comercial\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"title\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Local comercial en el centro\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"price\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">0\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"size_total\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">120\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"bedrooms\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">0\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"bathrooms\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"postal_code\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"07820\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"description\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"&#x3C;h2>Características del local&#x3C;\u002Fh2>&#x3C;p>Superficie total de 120 m² en planta baja…&#x3C;\u002Fp>\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"images\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"id\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"7eac604ad45147d19c7cedb2a10569aa\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"url\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"https:\u002F\u002Fcdn.vestta.io\u002Fmedia\u002F7eac604ad45147d19c7cedb2a10569aa.webp\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"order\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"is_primary\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">true\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      ],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"videos\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"specs\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"holiday_renting\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"temporal_renting\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"address_privacy\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"approximate\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">        \"price_calc\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"price_alq\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">2000\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"price_trasp\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">25000\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"features\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"key\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"air_conditioning\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"label\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Aire Acondicionado\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"value\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Sí\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">          \"isextra\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      ],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"status\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"disponible\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"address\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"San Antonio\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"city\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"San Antonio\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"province\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Islas Baleares\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"country\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"España\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"lat\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">38.98\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"lon\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1.3\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"is_featured\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"created_at\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"2026-07-21T11:42:51.820440+02:00\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">      \"updated_at\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"2026-09-26T19:38:41.390976+02:00\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  ],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"count\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">78\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"limit\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">20\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"offset\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">0\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"filters\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"locations\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"operation\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"alquiler\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"authenticated_as\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Inmobiliaria Ejemplo\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"status":172,"description":308,"schemaName":309},{"status":311,"description":312,"schemaName":309},{"status":314,"description":315,"schemaName":309},{"status":317,"description":318,"schemaName":309},{"status":320,"description":321,"schemaName":322},{"status":324,"description":325,"schemaName":309},[922,925,928],{"id":328,"label":329,"lang":110,"code":923,"html":924},"curl \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties?limit=20\" \\\n  -H \"X-Api-Key: $VESTTA_API_KEY\"","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties?limit=20\"\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"X-Api-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":333,"label":334,"lang":333,"code":926,"html":927},"const response = await fetch('https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties?limit=20', {\n  headers: { 'X-Api-Key': process.env.VESTTA_API_KEY },\n})\n\nconst data = await response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> response\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> fetch\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">(\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties?limit=20'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  headers: { \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'X-Api-Key'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: process.env.\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> data\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">json\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":338,"label":339,"lang":338,"code":929,"html":930},"import os\n\nimport requests\n\nresponse = requests.get(\n    \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\",\n    headers={\"X-Api-Key\": os.environ[\"VESTTA_API_KEY\"]},\n    params={\n        \"limit\": 20,\n    },\n)\nresponse.raise_for_status()\ndata = response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests.get(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">    \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">    headers\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"X-Api-Key\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"VESTTA_API_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]},\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">    params\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">        \"limit\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">20\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response.raise_for_status()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">data \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.json()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u002Fproperties\u002Flist",1791929309034]