The Vitrina API
What the platform exposes and how this documentation is ordered.
Your code gets into a workspace with an API key. One call is enough:
curl https://api.vitrinadev.com/api/v1/locations \
-H "Authorization: Bearer $VITRINA_KEY"{
"data": [
{
"id": "6812d9f0-9bed-44b5-91df-4e5b90941f6b",
"name": "Sucursal Providencia",
"comuna_code": "13123",
"region_code": "13",
"timezone": "America/Santiago",
"is_active": true
}
]
}Everything hangs off https://api.vitrinadev.com/api/v1 and everything asks for that same credential. What worked lands inside data; what failed, inside error. Errors has the code catalogue.
A workspace holds the business's contacts and conversations. It also holds the calendar, the locations, the team and the catalogue of what the business offers. Verticals run on that base, today car dealerships and clinics, and add what their trade needs.
How this documentation is ordered
The platform comes first: the chapters that hold in any workspace. Then one group per vertical, with what exists only there. Both carry their Recipes: one whole task, solved end to end.
| Chapter | What it is for |
|---|---|
| Get started | The short path: one credential, one read, one failure and one event subscription. |
| See the training videos | Videos, slide decks and manuals for the app, at training.vitrinadev.com. |
| Solve one whole job with the API | The recipes that hold in any workspace: each one assembles a whole job, in order. |
| Use the TypeScript SDK | The TypeScript package generated from the contract: typed client, pagination, webhook verification. |
| Issue and rotate your API keys | Which credentials exist, what a scope is, and how a narrow key is minted. |
| Issue a personal token | A person's credential: it sees exactly what they see and dies with their membership. |
| Run your integration without touching real data | A synthetic workspace, an sk_test_ key, and the sends that get captured instead of going out. |
| Send messages | Writing to a contact on their channel, and the blocks that can stop it. |
| Manage products and variants | The catalog of what the workspace offers, its variants and the facts each one keeps. |
| Search, create and merge contacts | The workspace's people and the companies they belong to: search, create, correct, merge and tag. |
| Move leads across the board | The opportunities the team is working, and the board they move across. |
| Reply and resolve tickets | The thread with a customer and the case that outlives it: read the inbox, reply, assign, snooze and resolve. |
| Write emails with an assistant | The draft a connected assistant leaves ready, the workspace voice it reads before writing, and the send a person always makes. |
| Schedule an appointment | The hour that is booked, the service being booked, and the events that announce every state change. |
| Configure the agent that talks | The agent that talks on the workspace's behalf: draft and live config, skills, tools and change requests. |
| Give the agent something to quote | What an agent may quote from: uploaded files and hand-authored sources. |
| Publish your help center | The customer-facing self-service portal, and its sync into the knowledge base. |
| Measure the workspace | The workspace's numbers and the panel's reports, read-only. |
| Configure your locations | The workspace's places of business, and the address they are shown with. |
| Manage the workspace's people | The workspace's members and their invitations: add one, change a role, and a removal that never strands open work. |
| Build teams and custom roles | The teams that route channels and tickets, and the custom roles that decide access. |
| Automate replies and assignment | One-click replies with side-effects, and the ordered routing that decides who a conversation lands with. |
| Check and disconnect channels | Read, check the health of, and disconnect a messaging channel. |
| Set SLAs and automate actions | A ticket's time targets, and the event → condition → action automations. |
| Verify your sending domain | The workspace's own domain for sending email campaigns. |
| Use WhatsApp templates and Flows | Meta-approved messages and the forms a conversation can open. |
| Receive signed events | Subscribe to the workspace's events and verify the signature they arrive with. |
| MCP | Connect an AI client, Claude or Cursor, to the workspace in read-only mode. |
| Read an error and act on it | The envelope every failure arrives in, and what to do with each code. |
| Track versions and deprecations | What each operation promises at its tier, and how long a deprecated one lives. |
| Changelog | Every operation or event that was added, changed, deprecated or removed, by release. |
| Handle personal and health data | Which operations touch sensitive data, and what using them obliges you to. |
The Reference has the full contract, operation by operation. It's generated from the same OpenAPI document the backend emits.
This site is written in Spanish first and mirrored here. Both trees carry the same chapters, and the language switcher keeps you on the page you're reading. The examples are the same run either way, so a field name or a message you see here is what the API really returned.
What is published, and what is not
Every published operation carries a tier, which says how much it can change and with how much notice. Today they're all beta; none has reached estable. Anything with no published tier is interna: undocumented, and it can change or disappear without notice, so don't build on it. Track versions and deprecations explains the three tiers.
Where to start
Get started
Get a key, read something from the workspace, recognise a failure and receive your first signed event.
Issue and rotate your API keys
What a scope is, how a narrow key is minted, and what happens when you revoke it.
Money works the same in every trade. Charge and reconcile payments covers what somebody owes, what arrived and how the two meet.
Each vertical also carries its recipes, one whole task solved end to end:
Recipes for car dealerships
Load your stock without loading the same car twice · Keep your stock current from your ERP · Publish your stock on your website · List who's interested in a car · Receive leads in your CRM with webhooks · Send your customer a notice when the car they wanted arrives · Export the vehicle's file to your system
Recipes for clinics
Open the clinic's calendar to your software · Receive appointments in your system · Connect Claude to your calendar
And each one has its own chapters. For car dealerships, Load and keep the lot and Keep and read the vehicle file. For clinics, Book into the clinic's agenda, List services and their prices and Quote a plan and close the till.