Créer un jeton porteur
Échange les informations d’authentification d’une Auth Key contre un jeton porteur à portée définie.
https://api2.transloadit.com/ tokenIl s’agit du point de terminaison de jetons OAuth 2.0. Les clients sans interface graphique échangent leur Auth Key et
leur Auth Secret contre un jeton porteur de courte durée avec le type d’octroi client_credentials, pris en charge
directement par l’API Transloadit. Les clients MCP qui
se sont connectés par URL échangent le
code d’autorisation provenant de l’écran de consentement de la Console avec le type d’octroi authorization_code
(PKCE S256, sans informations d’identification HTTP Basic) et effectuent la rotation du jeton de rafraîchissement obtenu avec le
type d’octroi refresh_token.
Sur /token, les erreurs d’octroi OAuth pour authorization_code et refresh_token utilisent le corps standard
contenant error et error_description. Les limites de débit renvoient RATE_LIMIT_REACHED (429), et
les défaillances internes inattendues renvoient SERVER_500 (500). Les requêtes mal formées rejetées
avant l’identification du type d’octroi peuvent recevoir une demande d’authentification HTTP Basic (401), ou
TOKEN_INVALID_REQUEST si des informations d’identification Basic ont été fournies.
Les jetons obtenus avec les informations d’identification du client sont générés côté serveur à l’aide de votre Auth Key et de votre Auth Secret. Si vous exposez la création de jetons
via une interface utilisateur, appelez /token depuis votre backend (jamais directement depuis le navigateur).
Les Workspaces résiliés ne peuvent pas créer de nouveaux jetons porteurs. Pour les points de terminaison dont la documentation autorise explicitement les lectures après résiliation, utilisez plutôt la procédure de lecture signée avec une Auth Key active existante. La facturation dispose de sa propre procédure de facturation signée.
Les requêtes doivent utiliser application/x-www-form-urlencoded ; le type d’octroi client_credentials nécessite également l’authentification HTTP Basic :
Dans un shell de confiance côté serveur disposant de curl et de jq, définissez TRANSLOADIT_KEY et TRANSLOADIT_SECRET avec les valeurs de votre Auth Key et de votre Auth Secret. Gardez secrets les deux informations d’identification et le jeton obtenu ; ne procédez jamais à cette configuration dans du code de navigateur.
Cet exemple demande un accès en lecture et en écriture aux Assemblies et enregistre la valeur access_token renvoyée dans TRANSLOADIT_TOKEN pour les requêtes suivantes dans le même shell. Pour un autre point de terminaison, utilisez plutôt les portées qui y sont indiquées ; l’Auth Key doit déjà les accorder. Les points de terminaison authentifiés par une Auth Key ou un jeton porteur incluent la configuration de jeton appropriée dans leurs exemples de requêtes.
if ! TOKEN_RESPONSE="$(curl --fail-with-body -sS \
--request POST \
--url 'https://api2.transloadit.com/token' \
--user "${TRANSLOADIT_KEY:?Set TRANSLOADIT_KEY}:${TRANSLOADIT_SECRET:?Set TRANSLOADIT_SECRET}" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'aud=api2' \
--data-urlencode 'scope=assemblies:read assemblies:write')"; then
printf '%s\n' "$TOKEN_RESPONSE" >&2
exit 1
fi
TRANSLOADIT_TOKEN="$(printf '%s' "$TOKEN_RESPONSE" |
jq -er '.access_token | strings | select(length > 0)')" || exit 1
Authentification
L’authentification HTTP Basic avec votre Auth Key et votre secret est requise pour les valeurs suivantes de grant_type : client_credentials. Les autres valeurs prises en charge ne nécessitent pas d’informations d’identification de compte. N’envoyez pas d’en-tête Authorization pour ces requêtes ; la preuve spécifique à leur autorisation reste requise.
Champs de formulaire
Type de contenu : application/x-www-form-urlencoded
Les champs suivants peuvent être envoyés au maximum une fois : aud, client_assertion, client_assertion_type, client_id, code, code_verifier, grant_type, redirect_uri, refresh_token, resource, scope.
Schéma JSON complet
Formulaire de demande de jeton OAuth 2.0 pour les types d’octroi par informations d’identification du client, par code d’autorisation et par jeton de rafraîchissement.
Les champs autres que ceux répertoriés pour cet objet sont acceptés.
| Champ | Type et description |
|---|---|
aud | stringValeur d’audience facultative pour |
client_assertion | stringUn JWT signé avec l’une des clés publiées par le client (RFC 7523), provenant de clients dont les métadonnées autorisent |
client_assertion_type | stringToujours |
client_id | stringL’identifiant du client issu de l’enregistrement dynamique ou l’URL HTTPS du document de métadonnées du client. Obligatoire pour |
code | stringLe code d’autorisation à usage unique transmis à l’URI de redirection du client après consentement. Obligatoire pour |
code_verifier | stringLe vérificateur de code PKCE dont l’empreinte SHA-256 a été envoyée dans |
grant_typeobligatoire | "authorization_code" | "client_credentials" | "refresh_token"Le type d’octroi OAuth 2.0 à exécuter. |
redirect_uri | stringL’URI de redirection utilisé dans la requête d’autorisation. Obligatoire pour |
refresh_token | stringLe jeton de renouvellement à remplacer. Obligatoire pour |
resource | stringLa ressource protégée à laquelle le jeton est destiné : le point de terminaison MCP hébergé ( |
scope | stringListe facultative de portées pour |
Utiliser le jeton
Passez le jeton sous la forme Authorization: Bearer <access_token> dans les requêtes API. Lorsqu’une requête est
authentifiée avec un jeton porteur valide, API2 considère l’exigence de
Signature Authentication comme satisfaite et
ignore la validation de la signature. Signature Authentication n’est exigée que pour les requêtes avec clé/secret.
Les vérifications de portée continuent de s’appliquer. L’audience par défaut api2 est acceptée par les points de terminaison API2 ordinaires et est
valide pendant 21 600 secondes par défaut. L’audience mcp est acceptée par le serveur MCP, qui la relaie
à API2 avec des informations d’identification de service ; elle est rejetée par les points de terminaison API2 ordinaires lorsqu’elle est présentée directement, et est valide pendant
604 800 secondes par défaut. Considérez la valeur expires_in de la réponse comme faisant autorité.
Réponse
Voici un exemple de corps de réponse :
{
"access_token": "opaque-token",
"expires_in": 21600,
"scope": "assemblies:read assemblies:write",
"token_type": "Bearer"
}Succès 2xx
Corps de la réponse JSON. application/json
Schéma du corps de la réponse
Schéma JSON complet
La réponse contient uniquement les champs répertoriés pour cet objet.
| Champ | Type et description |
|---|---|
access_tokenobligatoire | string (longueur minimale : 1)Le jeton à envoyer dans l’en-tête Authorization des requêtes API suivantes. Gardez-le secret. |
expires_inobligatoire | integer (minimum exclusif : 0)Durée de validité du jeton en secondes à compter de son émission. Demandez un nouveau jeton après son expiration. |
refresh_token | string (longueur minimale : 1)Renvoyé par les types d’octroi |
scopeobligatoire | string (longueur minimale : 1, longueur maximale : 512)Portées accordées à ce jeton, séparées par des espaces. Motif de validation (expression régulière)^(?:read|write|auth_keys:write|auth_keys:read|assemblies:write|assemblies:read|assembly_notifications:write|dam:read|dam:write|template_credentials:read|template_credentials:write|billing:read|queues:read|smart_cdn:sign|templates:read|templates:write|storage_grants:write)(?: (?:read|write|auth_keys:write|auth_keys:read|assemblies:write|assemblies:read|assembly_notifications:write|dam:read|dam:write|template_credentials:read|template_credentials:write|billing:read|queues:read|smart_cdn:sign|templates:read|templates:write|storage_grants:write))*$ |
token_typeobligatoire | string (toujours : "Bearer") |
HTTP 400
Corps de la réponse JSON. application/json
Schéma du corps de la réponse
Schéma JSON complet
N’importe lequel des schémas suivants peut s’appliquer :
error: "GET_ACCOUNT_UNKNOWN_AUTH_KEY"
Impossible de récupérer le Workspace, cette Auth Key est inconnue.
La réponse peut contenir des champs supplémentaires.
error: "TOKEN_INVALID_GRANT_TYPE"
Type d’octroi non valide.
La réponse peut contenir des champs supplémentaires.
error: "TOKEN_INVALID_REQUEST"
La demande de jeton n’est pas valide.
La réponse peut contenir des champs supplémentaires.
propriétés requises : error
La réponse peut contenir des champs supplémentaires.
| Champ | Type et description |
|---|---|
errorobligatoire | stringUn code d’erreur défini dans les RFC 6749, 7591 ou 8707, tel que Motif de validation (expression régulière)^(?:access_denied|invalid_client|invalid_client_metadata|invalid_grant|invalid_redirect_uri|invalid_request|invalid_scope|invalid_target|server_error|unauthorized_client|unsupported_grant_type)$ |
error_description | stringUne explication compréhensible par un humain qui ne nomme jamais de compte. |
HTTP 401
Corps de la réponse JSON. application/json
Schéma du corps de la réponse
Schéma JSON complet
N’importe lequel des schémas suivants peut s’appliquer :
error: "SERVER_401"
Autorisation requise.
La réponse peut contenir des champs supplémentaires.
error: "TOKEN_INVALID_CREDENTIALS"
Informations d’authentification du client invalides.
La réponse peut contenir des champs supplémentaires.
propriétés requises : error
La réponse peut contenir des champs supplémentaires.
| Champ | Type et description |
|---|---|
errorobligatoire | stringUn code d’erreur défini dans les RFC 6749, 7591 ou 8707, tel que Motif de validation (expression régulière)^(?:access_denied|invalid_client|invalid_client_metadata|invalid_grant|invalid_redirect_uri|invalid_request|invalid_scope|invalid_target|server_error|unauthorized_client|unsupported_grant_type)$ |
error_description | stringUne explication compréhensible par un humain qui ne nomme jamais de compte. |
HTTP 403
Corps de la réponse JSON. application/json
Schéma du corps de la réponse
Schéma JSON complet
N’importe lequel des schémas suivants peut s’appliquer :
error: "TOKEN_INVALID_AUDIENCE"
Audience invalide.
La réponse peut contenir des champs supplémentaires.
error: "TOKEN_INVALID_SCOPE"
Portée invalide ou non autorisée.
La réponse peut contenir des champs supplémentaires.
HTTP 429
Corps de la réponse JSON. application/json
Schéma du corps de la réponse
Schéma JSON complet
Limite de requêtes atteinte.
La réponse peut contenir des champs supplémentaires.
HTTP 500
Corps de la réponse JSON. application/json
Schéma du corps de la réponse
Schéma JSON complet
Erreur inattendue.
La réponse peut contenir des champs supplémentaires.