Previsualizar un documento antes de emitirlo
Ensaya una emisión sin emitir: NO firma, NO pide folio, NO llega al SII, NO le manda correo a nadie y NO consume cuota. Toma EXACTAMENTE el mismo input que notta.dte.emitir y lo valida con el mismo esquema, así que un resultado OK significa que la emisión no va a fallar por el payload. Devuelve tres cosas que sólo se saben así: 'totales', calculados por el mismo código que firma el documento (cítalos, no los recalcules); 'aprobacion_humana.requerida', que dice si emitir AHORA dejaría el documento esperando a una persona por el umbral de la empresa en vez de emitirlo; y 'url', el borrador en Notta con el PDF como se va a imprimir, para que la persona apruebe el documento y no tu resumen (pide sesión de Notta: NO se lo mandes al receptor). Úsala antes de emitir cuando el monto importe o cuando el usuario vaya a revisar. Lo que NO comprueba viene listado en 'no_verificado', y lo más caro de esa lista es si el SII le autorizó ese tipo de documento a esta empresa en producción: eso sólo se sabe intentando emitir. Cada llamada deja un borrador NUEVO en Notta y hay un tope por minuto, así que no la repitas sin cambiar nada.
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_Request 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.previsualizar/execute" \ -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \ -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": { "borrador_id": "string", "url": "string", "tipo_dte": -9007199254740991, "fecha_emision": "string", "sii_env": "string", "emisor": { "rut": "string", "razon_social": "string" }, "receptor": { "rut": "string", "razon_social": "string" }, "items": [ { "position": -9007199254740991, "nombre": "string", "cantidad": 0, "precio_unitario": 0, "monto_item": -9007199254740991, "exento": true } ], "totales": { "neto": -9007199254740991, "exento": -9007199254740991, "iva": -9007199254740991, "total": -9007199254740991 }, "totales_de_lineas": { "neto": -9007199254740991, "exento": -9007199254740991, "iva": -9007199254740991, "total": -9007199254740991 }, "advertencias": [ "string" ], "aprobacion_humana": { "requerida": true, "codigo": "string", "motivo": "string", "monto_comparable_clp": -9007199254740991 }, "no_verificado": [ "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 }}Obtener un documento emitido POST
Devuelve el detalle completo de un documento emitido, por su id en Notta: receptor, montos, items, referencias, correo de entrega, el estado en el SII con su glosa y el historial de transiciones. Es el seguimiento del flujo asíncrono que abre notta.dte.emitir. Para cortar una espera usa estado.terminal y nunca la igualdad con un estado concreto: un rechazo también es final.
Reenviar un documento por correo POST
Manda un correo REAL al receptor, con el PDF y el XML de un documento ya emitido, a la dirección que tiene registrada en Notta. No se puede des-enviar y no es gratis repetirla: cada llamada es otra copia en la casilla de un tercero, y Notta frena los reenvíos por minuto. No emite ni modifica el documento, y NO admite indicar otra dirección: si el receptor no tiene ninguna registrada, la llamada falla y hay que registrarla en app.notta.cl. Si sólo necesitas el archivo, usa los enlaces de notta.dte.enlace_pdf y notta.dte.enlace_xml, que no le escriben a nadie.