Skip to main content
POST
Crear credencial

Que hace

  • Inicia el enrolamiento de una credencial para autenticacion en el SII
  • Valida la clave contra el SII y, si es correcta, crea la credencial y la asocia a la entidad maestra
  • Deja andando la carga inicial de la empresa (documentos, libros y boletas de honorarios)

La respuesta es 202, no 201

El login contra el SII se hace con un navegador real y demora del orden de 15 segundos, asi que no ocurre dentro del request. Este endpoint responde 202 Accepted con un enrolamiento en curso:
La cabecera Location trae la URL del estado. Para saber si la credencial quedo enrolada hay que consultar el estado del enrolamiento hasta que status deje de ser pending:
Volver a enviar el mismo POST no acelera nada: mientras el primer enrolamiento sigue en curso, la API devuelve ese mismo enrollment_id en vez de gastar otro login contra el SII (el SII limita los logins por RUT).
El flujo de certificado digital (.pfx) no necesita login y sigue respondiendo 201 con la credencial, como antes.

Ejemplos de uso

  • Configurar credenciales del SII para una nueva empresa
  • Agregar credenciales adicionales para una entidad existente
  • Reemplazar credenciales expiradas o invalidas
  • Configurar multiples credenciales para diferentes entidades

Obtener el master_entity_id

El master_entity_id es el ID unico de la empresa en Tupana que se esta asociando con estas credenciales. Para obtener este ID, debes usar el endpoint /master-entities:
  1. Buscar la entidad por RUT usando GET /master-entities?rut=76543210-1
  2. Obtener el ID de la respuesta (campo id)
  3. Usar ese ID como master_entity_id en la creacion de credenciales

Tipos de Credenciales

Puedes usar credential_type (string) o credential_type_id (numerico) para indicar el tipo de credencial. Consulta la referencia completa de tipos de credenciales para mas detalles.

Certificado digital (.pfx) por archivo

Si necesitas subir un certificado digital, el archivo .pfx se envia en el payload JSON como string base64.
  • Convierte primero el archivo .pfx a base64
  • Envia ese valor en el campo digital_certificate_base64
  • Envia digital_certificate_password si corresponde
  • Envia credential_type: "certificate" para guardarlo como credencial de certificado digital

Ejemplo de payload

Importante

  • El .pfx se envia como string base64 en digital_certificate_base64
  • En este flujo no se envian user_rut ni password
  • El backend guarda la credencial como tipo certificado digital

Authorizations

Authorization
string
header
required

API Key para autenticación. Debe proporcionarse en el header Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo 'Api-Key ' seguido de tu API key)

Body

application/json
user_rut
string
required

RUT del usuario (sin puntos y con guión)

Pattern: ^[0-9]+-[0-9kK]$
Example:

"12345678-9"

password
string
required

Contraseña del usuario en el SII

Example:

"mi_password_segura"

digital_certificate_password
string
required

Contraseña del certificado digital

Example:

"mi_password_certificado"

master_entity_id
integer
required

ID de la entidad maestra a la que pertenece la credencial

Example:

123

credential_type_id
integer

ID del tipo de credencial (opcional, por defecto SII)

Example:

70

Response

Credencial de certificado digital creada (solo el flujo con digital_certificate_base64, que no requiere login en el SII)

id
integer

ID único de la credencial creada

Example:

1

user
string

RUT del usuario de la credencial

Example:

"12345678-9"

master_entity
object

Información de la entidad maestra asociada

credential_type
object

Tipo de credencial

status
enum<string>

Estado de la credencial

Available options:
VALID,
INVALID,
EXPIRED
Example:

"VALID"

created_at
string<date-time>

Fecha de creación de la credencial

Example:

"2024-01-01T10:00:00Z"