Tu primera llamada
En cinco minutos: una key de prueba, un curl con un comprobante Yappy y la respuesta explicada.
1. Consigue una key de prueba
Entra al panel y copia la key que empieza por ib_test_. Con ella cada endpoint devuelve datos de ejemplo y no consume créditos. Ver Sandbox vs producción.
2. Envía un comprobante
Los endpoints de documento reciben el archivo por multipart/form-data en el campo file. Sirve cualquier captura de Yappy en JPEG, PNG, WEBP, GIF o PDF de hasta 10 MB.
curl https://api.istmobot.com/v1/yappy \ -H "Authorization: Bearer ib_test_..." \ -F file=@yappy.png
3. Lee la respuesta
data trae los campos del comprobante. meta trae el request_id (guárdalo para soporte), los créditos usados y si la llamada fue sandbox.
{ "data": { "monto": 25.5, "moneda": "USD", "fecha": "2026-09-17T14:32:00-05:00", "referencia": "YP-8841203", "emisor": { "nombre": "Juan Pérez", "telefono": "+507 6123-4567" }, "receptor": { "nombre": null, "telefono": null, "comercio": "Café Istmo" }, "descripcion": "Almuerzo", "estado": "completado" }, "meta": { "request_id": "req_3f9c2a", "credits_used": 0, "plugin_version": "1.0.0", "sandbox": true } }
Un campo que no aparece en la imagen llega como null, nunca inventado.
4. Lo mismo desde tu código
const form = new FormData();
form.append("file", fileBlob, "yappy.png");
const res = await fetch("https://api.istmobot.com/v1/yappy", {
method: "POST",
headers: { Authorization: "Bearer ib_test_..." },
body: form,
});
const { data, meta } = await res.json();
console.log(data.monto, data.referencia);5. Pasa a producción
Cambia ib_test_ por tu key ib_live_. Misma URL, mismo esquema; ahora la IA lee el documento real y cada llamada exitosa descuenta créditos. Ver Créditos y límites.
istmobot