Ir al contenido

Obtener un token

POST/v1/oauth/token

Intercambia tu client_id y client_secret por un token de acceso. Este endpoint no lleva autenticación — es el que te la da.

https://sandbox.facturacion.misofk.com/v1/oauth/token
Content-Type: application/json
Campo Tipo Obligatorio Descripción
grant_type string Exactamente client_credentials. Cualquier otro valor responde grant_type debe ser client_credentials.
client_id string Empieza por fc_.
client_secret string No puede ir vacío.
Ventana de terminal
curl -X POST https://sandbox.facturacion.misofk.com/v1/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "client_credentials",
"client_id": "fc_tu_client_id",
"client_secret": "tu_client_secret"
}'
{
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 3600
}
Campo Descripción
token_type Siempre Bearer.
access_token El JWT. Va en Authorization en todas las demás llamadas.
expires_in Segundos de vida: 3600, una hora.
Código code Cuándo
401 UNAUTHORIZED client_id o client_secret inválidos
400 VALIDATION Falta un campo, o grant_type no es client_credentials
{
"status": 401,
"code": "UNAUTHORIZED",
"message": "client_id o client_secret inválidos",
"errors": []
}
Ventana de terminal
TOKEN=$(curl -s -X POST https://sandbox.facturacion.misofk.com/v1/oauth/token \
-H "Content-Type: application/json" \
-d '{"grant_type":"client_credentials","client_id":"fc_...","client_secret":"..."}' \
| jq -r .access_token)
curl https://sandbox.facturacion.misofk.com/v1/documents \
-H "Authorization: Bearer $TOKEN"

Guárdalo mientras viva. Pedir un token en cada llamada duplica tus peticiones y te acerca al límite de 300 por minuto sin ganar nada.