Authentification
Chaque appel porte une clé d'API dans l'en-tête Authorization. Il n'existe aucun autre mode d'authentification.
L'en-tête
Le schéma est Bearer. Une clé absente, mal formée, inconnue ou révoquée donne toujours un 401 — les quatre cas se distinguent par le champ code de la réponse, jamais par le statut HTTP.
Authorization: Bearer gaff_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxconst res = await fetch('https://getaff.org/api/v1/me', {
headers: { Authorization: `Bearer ${process.env.GETAFF_API_KEY}` },
});
if (res.status === 401) {
// Read the code, not the message: it is the stable part of the contract.
const { error } = await res.json();
throw new Error(`GetAff rejected the key: ${error.code}`);
}Affichée une seule fois
Nous ne conservons qu'une empreinte de votre clé, jamais sa valeur. Personne — pas même nous — ne peut vous la rappeler après sa création. Si vous la perdez, révoquez-la et créez-en une autre : c'est une opération sans conséquence.
Où la conserver
Une clé d'API donne accès à vos revenus. Traitez-la comme un mot de passe de production.
- Dans un gestionnaire de secrets, ou à défaut une variable d’environnement.
- Jamais dans un dépôt de code, même privé : un dépôt privé finit par être cloné.
- Jamais dans un ticket, un message ou une capture d’écran.
- Une clé par intégration, pour pouvoir en révoquer une sans arrêter les autres.
Le préfixe gaff_live_ est reconnaissable à dessein : il est détecté par les scanners de secrets des forges et il saute aux yeux dans un journal. C'est notre meilleure chance de repérer une fuite pendant qu'elle est encore réparable.
En cas de fuite
Révoquez immédiatement depuis la page « Clés d'API ». La révocation prend effet sur l'appel suivant. La ligne est conservée, marquée révoquée, avec sa date de dernier usage : c'est ce qui permet de savoir si la clé a servi après avoir fuité.
Clés d'APIPortées
Toute clé porte aujourd'hui la portée read, la seule qui existe. Le champ est déjà présent dans la réponse de /v1/me pour qu'un client écrit aujourd'hui continue de fonctionner le jour où d'autres portées apparaîtront.