An integration lets your organization work with an insurer’s, a public registry’s or a clinical system’s data through the Arbol API: check eligibility and affiliations, look up patients, read availability, book appointments. You call the integration’s operations; Arbol handles the provider’s side.
How you call an integration
Each integration is a service of the API, and you call it like any other: the same base URL, the same credential and the same response envelope.
| Path | https://api.getarbol.com/v1/<service>/…, such as /v1/sura/… |
| Reference | /api/<service>/, such as the SURA reference |
| Scopes | Named after the service, such as sura:appointments:write. Each operation’s reference lists the ones it accepts. |
| Credential | The same as the whole API: see Authentication. When you create an API key with account.apiKeys.create, you can also limit it to some operations and connections of an integration. |
Available integrations
- SURA12 endpoints
Eligibility, patients, services, professionals, availability, appointments, authorizations and copays through your SURA connections.
- Nueva EPS1 endpoint
Member affiliation lookups through your Nueva EPS connections.
- gMedic23 endpoints
Patients and patient notes, agendas, availability and appointments, sessions, branch offices and reference lists from gMedic.
- Visoft12 endpoints
Clinics, contracts and services, professionals, patients, availability and appointments from Visoft.
- AXA3 endpoints
Beneficiary eligibility, medical authorizations and the provider profile from AXA.
- Salud Total5 endpoints
Member affiliation, authorization and filing records, invoices and objection notices through your Salud Total IPS connections.
- ADRES1 endpoint
A person and every EPS affiliation they have, from Colombia's national affiliate database.
- Policía Colombia1 endpoint
The judicial statement the Colombian National Police publish for a document, word for word.
- Sisbén1 endpoint
A person's Sisbén IV registration, with its official group and subgroup.
Before the first call
Your organization needs the integration active:
- Insurers and clinical systems, such as SURA, Nueva EPS, gMedic or Visoft, need a connection, which the Arbol team sets up with your organization and keeps working. To add one, write to your Arbol team.
- Colombian registries (ADRES, Sisbén and Policía Colombia): they’re included with Arbol. The organization’s Owner turns each one on in Integrations in Arbol Account (how), or they’re turned on with
account.registryInstallations.update.
Connections
Your organization reaches each insurer or clinical system through a connection. Connections hold no data you need to send, and no operation returns anything secret about them.
To see your organization’s connections, call account.connections.list. Each one has:
| Field | Meaning |
|---|---|
id |
The connection’s id (con_…). Integration operations take it as connectionId. |
integration |
The integration it belongs to, such as sura. |
name |
The name people and agents choose it by, such as Sede Norte. |
status |
active when it can be used. |
tools |
The tools it offers a Raíz agent. |
When a connection stops being active, write to your Arbol team.
Choosing a connection
Most integration operations take an optional connectionId. While your organization has one connection to an integration, you can leave it out; with several, send the one to use. Some operations always require it: their reference marks it as required. When no connection can run the call, the operation answers an error saying the integration isn’t configured for your organization.
Colombian registries
ADRES, Sisbén and Policía Colombia are independent integrations, with one lookup operation each:
| Registry | What it returns | Operation | CLI |
|---|---|---|---|
| ADRES | A person’s EPS affiliations | adres.affiliations.lookup |
arbol adres affiliations lookup |
| Sisbén | The Sisbén registration, group and subgroup | sisben.classifications.lookup |
arbol sisben classifications lookup |
| Policía Colombia | The judicial statement for a document | policia-colombia.judicialRecords.lookup |
arbol policiacolombia judicial-records lookup |
ADRES returns EPS affiliations only: for Sisbén, call its own operation. An EPS regime says nothing about a Sisbén group.
Make a lookup
Each operation is a POST that takes documentType and documentNumber in the body. Send the number as a string, keeping its leading zeros, and use the document types the operation’s reference lists. Only look up the document of a person who authorized it:
curl https://api.getarbol.com/v1/adres/affiliations/lookup \
--request POST \
--header "Authorization: Bearer $ARBOL_API_KEY" \
--header "Content-Type: application/json" \
--data '{ "documentType": "CC", "documentNumber": "<documentNumber>" }'With the TypeScript SDK, it’s arbol.adres.affiliations.lookup({ documentType, documentNumber }); the other two are arbol.sisben.classifications.lookup() and arbol.policiaColombia.judicialRecords.lookup().
All three accept any of the scopes account:organizations:read, account:connections:read or account:connections:write. A restricted API key must also allow the exact operation, such as adres.affiliations.lookup. A scope doesn’t install the registry or bypass the key’s restrictions. For one-off lookups, create an API key with a short expiry, which you choose when you create it in Arbol Account, and keep it out of source code, agent instructions and logs.
Read the result
By default, data holds the registry’s structured result:
| Registry | Fields of data |
|---|---|
| ADRES | outcome, person.fullName, all affiliations with their EPS, status, regime and dates, and consultedAt and verification. |
| Sisbén | registered, group, subgroup, observedAt and verification. |
| Policía Colombia | documentType, documentNumber, fullName, identityStatus, judicialStatus, details and observedAt. |
A previously known result keeps the time it was observed: for ADRES and Sisbén, verification: "last_known" marks it. An error or an unverified result doesn’t prove that something is absent.
Sisbén. registered: true confirms the registration, false is an explicit negative report, and null means it couldn’t be verified. Report the full subgroup when it comes, such as C12. An EPS affiliation doesn’t establish eligibility for social programs.
group |
subgroup range |
|---|---|
| A | A1–A5 |
| B | B1–B7 |
| C | C1–C18 |
| D | D1–D21 |
Policía Colombia. fullName is the name as the source reports it. identityStatus: "document_matched" means the returned document matches the one looked up; it doesn’t authenticate whoever presents it. Keep the official text of details, and tell no_pending_matters apart from not_currently_required: a statement about current judicial requirements isn’t a complete conviction history. With judicialStatus: "unverified", no verified statement was obtained: never present it as no pending matters.
Text for AI agents
Add "agentMode": true to get the same observation as concise Spanish text: in data.text with Accept: application/json, or as a text body with Accept: text/plain. Use the structured result when your program needs the fields; the SDK returns the typed data.
Over MCP
The same lookups are tools of the MCP server: adres_affiliations_lookup, sisben_classifications_lookup and policia_colombia_judicial_records_lookup. They take the same fields, agentMode included, and apply the same installation and credential restrictions. A tool appearing in the list doesn’t mean a lookup succeeded.
Salud Total
Salud Total answers with your organization’s IPS accounts. The Arbol team connects each account for one use, post-consultation or billing, and every lookup takes the connectionId of the active connection for that use (see Connections).
| Question | HTTP request | TypeScript SDK | CLI | Connection |
|---|---|---|---|---|
| Is this person enrolled? | POST /v1/salud-total/affiliations/lookup |
arbol.saludTotal.affiliations.lookup(input) |
arbol saludtotal affiliations lookup |
Post-consultation |
| Does this person have authorizations that day? | POST /v1/salud-total/authorizations/lookup |
arbol.saludTotal.authorizations.lookup(input) |
arbol saludtotal authorizations lookup |
Post-consultation |
| Does this person have filed requests that day? | POST /v1/salud-total/filings/lookup |
arbol.saludTotal.filings.lookup(input) |
arbol saludtotal filings lookup |
Post-consultation |
| Does this invoice exist? | POST /v1/salud-total/invoices/lookup |
arbol.saludTotal.invoices.lookup(input) |
arbol saludtotal invoices lookup |
Billing |
| How many objection and devolution notices are there? | GET /v1/salud-total/notices/count |
arbol.saludTotal.notices.count(input) |
arbol saludtotal notices count |
Billing |
A person’s lookups take documentType: "CC" and their documentNumber in the body; authorizations and filings also take the day (day, YYYY-MM-DD).
| Answer | What it means |
|---|---|
matched |
The affiliation found exactly one person; providerStatus is their enrollment status as Salud Total writes it. |
no_match, ambiguous |
Nobody has that document, or more than one person matches. It is not an outage. |
location_required |
For authorizations and filings: the account has several sites. Ask which one applies and repeat the lookup with the chosen id in the field field names. |
records_found, no_records |
There are records that day (recordCount), or none. A record does not approve a procedure. |
REPORTING_WINDOW_CLOSED |
For invoices: Salud Total’s report is closed at that hour. The error says when it opens and closes (opensAtHour, closesAtHour, Bogotá time). |
A failed lookup, or an expired Salud Total session, does not mean there are no records: the error says so with its code, and the Salud Total reference lists them all.
Integrations in Raíz agents
A Raíz agent uses an integration through tools: each of its integrationTools pairs a connectionId with a tool that connection offers, as account.connections.list shows them. For an agent to use a Colombian registry, also assign it the registry’s tool. See Create an agent.
New integrations
New integrations arrive as new services of the API, and appear on this page and in the API reference as the API adds them.