Sube documentos financieros y exporta sus datos por API

Define BASE con el origen de Rahunko, elige un espacio y usa una clave Bearer con los scopes necesarios. Los tres pasos siguientes corresponden al flujo implementado.

Leer la referencia

011. Crea la solicitud de subida de subida

Prepara localmente el nombre, MIME, tamaño, SHA-256 y sourceKind exactos. La respuesta incluye upload.id, que usarás para enviar el archivo.

  • La clave de idempotencia tiene entre 8 y 128 caracteres permitidos.
  • El hash corresponde exactamente a los bytes del archivo.
  • Otro contenido con la misma clave produce un conflicto.
BASE="https://your-rahunko-origin.example"
WORKSPACE_ID="ws_123"
API_KEY="rk_replace_with_your_key"
BYTE_LENGTH=$(wc -c < march.pdf | tr -d ' ')
SHA256=$(shasum -a 256 march.pdf | awk '{print $1}')

cat > intent.json <<JSON
{
  "fileName": "march.pdf",
  "mediaType": "application/pdf",
  "byteLength": $BYTE_LENGTH,
  "sha256": "$SHA256",
  "sourceKind": "pdf"
}
JSON

curl -X POST "$BASE/api/v1/workspaces/$WORKSPACE_ID/uploads" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: march-2026-upload-01" \
  -H "Content-Type: application/json" \
  --data-binary @intent.json

022. Envía los bytes y finaliza

Envía los mismos bytes con el tamaño y digest declarados. Después finaliza con el objeto JSON vacío. Finalize responde con 202.

  • Content-Length debe coincidir con el tamaño declarado.
  • Se rechazan la longitud, MIME, firma o hash incorrectos.
  • Finalize acepta únicamente {}.
UPLOAD_ID="upload_from_intent_response"

curl -X PUT "$BASE/api/v1/workspaces/$WORKSPACE_ID/uploads/$UPLOAD_ID" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/pdf" \
  -H "X-Content-SHA256: $SHA256" \
  --data-binary "@march.pdf"

curl -X POST "$BASE/api/v1/workspaces/$WORKSPACE_ID/uploads/$UPLOAD_ID/finalize" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

033. Comprueba el estado y exporta

Sigue el job hasta que termine, consulta la revisión actual y guarda la exportación como archivo. Sustituye 3 en la solicitud por la revisión del documento.

  • Puedes exportar en CSV, JSON o XLSX.
  • Cancel usa POST .../documents/{documentId}/cancel con {"revision":N}.
  • Delete usa la misma revisión actual.
JOB_ID="job_from_finalize_response"
DOCUMENT_ID="document_from_finalize_response"
REVISION=3

curl "$BASE/api/v1/workspaces/$WORKSPACE_ID/jobs/$JOB_ID" \
  -H "Authorization: Bearer $API_KEY"

curl "$BASE/api/v1/workspaces/$WORKSPACE_ID/documents/$DOCUMENT_ID" \
  -H "Authorization: Bearer $API_KEY"

curl "$BASE/api/v1/workspaces/$WORKSPACE_ID/documents/$DOCUMENT_ID/export?format=csv&revision=$REVISION" \
  -H "Authorization: Bearer $API_KEY" \
  -o march.csv

Los errores de API responden con JSON y un code estable: 401 para una clave no válida, 403 para scopes insuficientes, 409 para conflictos de estado o revisión y 422 para bytes rechazados.