Documentación de la API

Crea una clave en la página de desarrolladores. Envíala como bearer token. Los ejemplos usan las mismas rutas del archivo OpenAPI.

Envia un PDF, recoge firmas verificadas y descarga el archivo sellado. El sello visual en Firmar PDF sigue gratis y en el navegador.

Envia la clave en Authorization: Bearer gk_live_... Crear clave. JSON OpenAPI

cURL

curl -X POST https://gustkit.com/api/v1/envelopes \
  -H "Authorization: Bearer gk_live_..." \
  -H "Idempotency-Key: envelope-42" \
  -H "Content-Type: application/json" \
  -d '{"pdfBase64":"<base64>","ownerName":"Rui","signers":[{"email":"[email protected]","name":"Ana","role":"client"}],"copies":["[email protected]"],"order":"sequential","fields":[{"signer":0,"page":1,"x":0.55,"y":0.8,"w":0.32,"h":0.08,"kind":"signature"}],"lang":"es"}'

JavaScript

const res = await fetch("https://gustkit.com/api/v1/envelopes", {
  method: "POST",
  headers: {
    Authorization: "Bearer gk_live_...",
    "Content-Type": "application/json",
    "Idempotency-Key": "envelope-42",
  },
  body: JSON.stringify({
    pdfBase64,
    signers: [{ email: "[email protected]", name: "Ana", role: "client" }],
    copies: ["[email protected]"],
    order: "parallel",
    fields: [{ signer: 0, page: 1, x: 0.55, y: 0.8, w: 0.32, h: 0.08, kind: "signature" }],
    lang: "es",
  }),
});
const envelope = await res.json();

Python

import requests
res = requests.post(
    "https://gustkit.com/api/v1/envelopes",
    headers={"Authorization": "Bearer gk_live_...", "Idempotency-Key": "envelope-42"},
    json={"pdfBase64": pdf_b64, "signers": [{"email": "[email protected]", "name": "Ana"}], "copies": ["[email protected]"], "order": "parallel", "lang": "es"},
)
print(res.status_code, res.json())

Errores

Los errores son JSON: error.code y error.message. 401 significa clave ausente o revocada. 402 significa cuota gratis agotada con el cobro activo. 409 es un conflicto, incluida una clave de idempotencia repetida con otro cuerpo. 429 es el límite por minuto de la clave.