Emitir DTE (factura o nota)
Emite un DTE ante el SII vía Notta: factura afecta (33), exenta (34), nota de débito (56) o nota de crédito (61, que exige references[] al documento original, y este solo puede ser una factura 33 o 34). Cada item declara si es exento y su monto_item (cantidad × precio_unitario, ya con el descuento de la línea aplicado); los TOTALES del documento (neto, exento, IVA, total) los calcula Notta. Las NOTAS (56/61) exigen además rut_emisor (el RUT de la empresa de esta conexión, que Notta no deriva en esa ruta) y la nota de débito (56) exige nd_reason; a cambio, no llevan forma_pago ni descuento_global. La emisión es ASÍNCRONA: esta llamada devuelve el documento con folio asignado y estado 'queued'; haz el seguimiento con notta.dte.consultar hasta EPR (aceptado) o un rechazo. Si un intento anterior falló por transporte o timeout, revisa los documentos RECIENTES con notta.dte.listar antes de reintentar, para no duplicar. Con correo_receptor, Notta envía el PDF+XML al receptor cuando el SII acepta.
API key de la organización, en 'Authorization: Bearer connect_sk_…'. Es la credencial para tu backend y tus agentes propios; se crea en el dashboard con permisos explícitos y su valor completo se muestra una sola vez. Autentica como agente: la bitácora atribuye la acción a la clave, nunca a la persona que la creó.
In: header
Header Parameters
Cuál conexión (conn_…) ejecuta esta llamada. Obligatoria en todo sistema conectable y sin resolución implícita, ni siquiera cuando la organización tiene una sola conexión activa: la conexión ES la empresa, y elegir por ti una que hoy acierta mañana acierta distinto sin que nadie cambie nada. Los ids salen de la tool 'conexiones.estado.consultar'. Si falta, la respuesta es 'validation_error' y no se contacta al sistema externo.
^conn_Clave de idempotencia para esta acción destructiva. Reenviar la MISMA clave con la misma entrada devuelve la respuesta ya emitida en vez de repetir el efecto; con una entrada distinta responde 'idempotency_conflict', y mientras el primer intento sigue en curso, 'idempotency_in_progress'. Un intento fallido nunca consume la clave. Sin cabecera, el pipeline genera una por ejecución, o sea que no hay deduplicación entre reintentos tuyos: mándala siempre que puedas reintentar.
length <= 255Request Body
application/json
La entrada de la tool, envuelta en 'input'. Manda '{"input": {}}' cuando la tool no toma argumentos: el sobre es obligatorio aunque esté vacío.
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/tools/notta.dte.emitir/execute" \ -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \ -H "Idempotency-Key: 9d1f4c2a-7b30-4e58-9c11-2f6a8de5b743" \ -H "Content-Type: application/json" \ -d '{ "input": { "tipo_dte": 33, "receptor": { "rut": "string", "razon_social": "string" }, "fecha_emision": "string", "items": [ { "nombre": "string", "cantidad": -9007199254740991, "precio_unitario": -9007199254740991, "exento": true, "monto_item": -9007199254740991 } ] } }'{ "data": { "id": "string", "tipo_dte": -9007199254740991, "folio": -9007199254740991, "estado": "string", "rut_receptor": "string", "montos": { "neto": -9007199254740991, "exento": -9007199254740991, "iva": -9007199254740991, "total": -9007199254740991 }, "sii_env": "string", "fecha_emision": "string", "sii_glosa": "string", "estado_legible": "string" }, "meta": { "request_id": "string", "tool_id": "string", "plane": "action", "latency_ms": 0, "audit_status": "recorded", "idempotency": "replayed" }}{ "error": { "code": "alcance_not_enabled", "message": "string", "suggested_fix": "string", "request_id": "string", "details": null }}{ "error": { "code": "alcance_not_enabled", "message": "string", "suggested_fix": "string", "request_id": "string", "details": null }}{ "error": { "code": "alcance_not_enabled", "message": "string", "suggested_fix": "string", "request_id": "string", "details": null }}{ "error": { "code": "alcance_not_enabled", "message": "string", "suggested_fix": "string", "request_id": "string", "details": null }}{ "error": { "code": "alcance_not_enabled", "message": "string", "suggested_fix": "string", "request_id": "string", "details": null }}{ "error": { "code": "alcance_not_enabled", "message": "string", "suggested_fix": "string", "request_id": "string", "details": null }}{ "error": { "code": "alcance_not_enabled", "message": "string", "suggested_fix": "string", "request_id": "string", "details": null }}Descargar el XML o el PDF de un DTE POST
Devuelve el XML firmado o el PDF de un DTE como base64. Para consumo programático (REST/SDK). En conversación prefiere notta.dte.reenviar: el base64 de un PDF es inmanejable en chat. Un documento recién emitido todavía no está firmado: hasta que lo esté, la descarga falla de forma reintentable.
Listar los DTEs recientes POST
Lista los DTEs MÁS RECIENTES emitidos por esta empresa en Notta (del más nuevo al más antiguo). El API de Notta NO ofrece filtros por tipo, fecha, estado ni receptor: solo un límite de cuántos traer, así que si buscas uno concreto pide más documentos y descarta tú los que no son. Úsalo como red antes de reintentar una emisión que falló por transporte o timeout: si el documento ya aparece entre los recientes, no lo vuelvas a emitir. Devuelve menos campos que notta.dte.consultar (sin neto, IVA ni ambiente): para el detalle completo consulta por id.