Empezar
De cero a tu primer request en cinco minutos.
1. Necesitas un plan que la incluya
La API pública es una función del plan (public_api). Hoy viene en Crecimiento y
Multi. Si tu cuenta no la tiene, cualquier llamada responde 403 PLAN_FEATURE_REQUIRED
diciéndote qué plan la incluye:
{
"error": {
"code": "PLAN_FEATURE_REQUIRED",
"message": "Esta función no está incluida en tu plan.",
"details": { "feature": "public_api", "requiredPlanKey": "GROWTH", "requiredPlanName": "Crecimiento" }
}
}2. Saca la llave
En el panel del negocio: Integraciones → API pública → Crear llave.
Le pones un alias (te vas a arrepentir si no: con tres llaves sin nombre no vas a saber cuál revocar), marcas los permisos que necesita y confirmas.
La llave se muestra UNA sola vez
Cópiala en ese momento y guárdala donde guardas tus otros secretos. Después solo vas a ver
vk_live_a1b2…7f3a. No es una molestia de diseño: si pudiéramos volver a mostrártela,
tendríamos que guardarla de forma reversible, y una filtración de nuestra base sería la
llave de tu sistema. Si la pierdes, rótala — no hace falta rehacer la integración.
3. Tu primer request
GET /v1/me es el request que conviene hacer siempre primero: valida la llave, te dice a
qué negocios entra y qué permisos tiene. Si algo va a fallar por configuración, falla aquí y
no a mitad de tu flujo.
curl https://api.verifika.tech/v1/me \
-H "Authorization: Bearer $VERIFIKA_API_KEY"{
"object": "apiKey",
"id": "cmtnj6kmc00000bw16bx3gkkm",
"name": "ERP del contador",
"type": "BUSINESS",
"scopes": ["incomes.read", "expenses.read", "plan.read"],
"companies": [{ "id": "cmt7xbfrg0001q3w1itst7uwo", "name": "Panadería Delipan" }],
"branchId": null,
"plan": { "key": "GROWTH", "name": "Crecimiento", "status": "ACTIVE" }
}4. Lee el libro
curl "https://api.verifika.tech/v1/incomes?status=VERIFIED&limit=10" \
-H "Authorization: Bearer $VERIFIKA_API_KEY"{
"object": "list",
"data": [
{
"object": "income",
"id": "cmtmf1k8m006faqw1lh27ozcr",
"amount": 45000,
"currency": "COP",
"status": "VERIFIED",
"origin": "WHATSAPP",
"occurredAt": "2026-09-04T20:04:05.000Z",
"verifiedAt": "2026-09-04T20:05:41.902Z",
"reference": "M1A2B3C4",
"customerName": "Juan Pérez",
"bankLabel": "Bancolombia",
"accountLabel": "Nequi *4821",
"branch": { "id": "cmt7xbfrj0002q3w1iq4ysatr", "name": "Principal" },
"attachments": [],
"bankChannels": ["EMAIL"]
}
],
"hasMore": true,
"nextCursor": "cmtkc0rif005ysuw1mbeef235"
}5. Escribe algo
Registrar un gasto, para comprobar que la escritura también funciona. Fíjate en la cabecera
Idempotency-Key: si la red se corta y reintentas, no se duplica.
curl -X POST https://api.verifika.tech/v1/expenses \
-H "Authorization: Bearer $VERIFIKA_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"amount": 120000,
"paidTo": "Harina La Espiga",
"occurredAt": "2026-09-04T14:10:00.000Z",
"categoryId": "cmt7xbfrm0003q3w121ldx6wz"
}'¿De dónde sale ese categoryId?
De GET /v1/expense-categories. Cada negocio tiene las suyas —nace con once y puede crear
más—, así que el id no es fijo ni compartido entre negocios.
Si tu llave entra a varios negocios
Con un plan Multi, una llave puede cubrir más de un negocio. En ese caso tienes que decir sobre cuál actúas:
curl "https://api.verifika.tech/v1/incomes?companyId=cmt7xbfrg0001q3w1itst7uwo" \
-H "Authorization: Bearer $VERIFIKA_API_KEY"Si no lo mandas, la respuesta es 400 con la lista de negocios disponibles. No elegimos por
ti a propósito: escribir en el libro equivocado no se nota hasta que el contador cuadra el mes.