VerifikaDocs
Guías

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"
Respuesta
{
  "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"
Respuesta (recortada)
{
  "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.

Siguiente paso

En esta página