Aller au contenu
API HILLS v1 Accès anticipé

Guides

Authentification

Envoyez votre clé d’API hm_live_ comme jeton Bearer : création, scopes, expiration, renouvellement, révocation et erreurs d’authentification.

Mis à jour le

Chaque requête à l’API HILLS envoie une clé d’API dans l’en-tête Authorization. Il n’y a ni session ni cookie : l’API ignore les cookies et n’envoie aucun en-tête CORS. Appelez-la uniquement depuis votre serveur.

La clé

Une clé se compose de hm_live_ suivi de 48 caractères hexadécimaux. Il n’existe qu’un seul type de clé. Elle lit et agit sur votre compte client ainsi que sur les artistes et labels qui lui sont rattachés.

Les clés de test (hm_test_…) ont été retirées le 12 octobre 2026. Elles renvoient 401 test_keys_retired. Pour tester une livraison DDEX, utilisez la même clé hm_live_ avec POST /ddex/validate, ou le dossier SFTP /test. Ni l’un ni l’autre ne crée quoi que ce soit. Voir Dossier de test.

Créer une clé

Les clés se créent dans l’application web HILLS, sur la page Developers (/dashboard/developers), avec New API key. Vous devez être le propriétaire du compte, ou avoir un rôle d’équipe disposant de la permission API keys. L’API est incluse dans les offres Enterprise et Custom. Sur les autres offres, vous ne pouvez pas créer de clés, et les clés existantes renvoient 403 api_not_in_plan.

Pour chaque clé, vous choisissez :

  • Un nom. Indiquez où elle est utilisée, par exemple ERP sync ou website.
  • Des scopes. Ce que la clé a le droit de faire. Voir plus bas.
  • Une expiration. Un nombre de jours, ou aucune.

La clé complète n’est affichée qu’une fois, à sa création. Ensuite, les listes n’en montrent que le préfixe (par exemple hm_live_ab12cd34). Si vous la perdez, créez-en une nouvelle.

Envoyer la clé

Envoyez-la comme jeton Bearer :

curl "https://api.hillsmusic.com/v1/me" \
  -H "Authorization: Bearer $HILLS_API_KEY"
const HILLS = "https://api.hillsmusic.com/v1";

export async function hills(path, init = {}) {
  const res = await fetch(HILLS + path, {
    ...init,
    headers: { ...init.headers, Authorization: `Bearer ${process.env.HILLS_API_KEY}` },
  });
  const body = await res.json();
  if (!res.ok) throw Object.assign(new Error(body.error), { status: res.status, code: body.code });
  return body;
}

console.log(await hills("/me"));

GET /me et GET /ping acceptent toute clé valide, quels que soient ses scopes. Servez-vous-en pour vérifier une clé. Voir Compte.

Scopes

Chaque clé a ses propres scopes, c’est-à-dire ses droits d’accès. Un endpoint qui exige un scope absent de la clé renvoie 403 insufficient_scope, avec le scope manquant dans scope.

Scope Ce qu’il autorise
members:read Lister vos artistes et labels.
members:write Inviter de nouveaux artistes et labels.
catalog:read Sorties, titres et leur livraison aux plateformes.
earnings:read Revenus par mois, par sortie ou par plateforme.
payouts:read Votre solde et vos demandes de retrait.
links:read Smart links et pré-sauvegardes avec leurs statistiques.
ddex:write Livrer des lots DDEX ERN et consulter leur statut. Permet aussi les tests.
ddex:validate Tester des lots DDEX uniquement. Rien n’est créé.
webhooks:read Lister les endpoints webhook et leurs livraisons.
webhooks:write Gérer les endpoints webhook, les secrets, les événements de test et les nouvelles tentatives.

Les nouvelles clés démarrent avec les cinq scopes de lecture : members:read, catalog:read, earnings:read, payouts:read et links:read. Les scopes d’écriture, DDEX et webhook ne sont jamais activés par défaut.

Donnez à chaque système sa propre clé, avec uniquement les scopes dont il a besoin. Un traitement de reporting a besoin de earnings:read, pas de ddex:write. Une tâche de CI qui vérifie des fichiers DDEX n’a besoin que de ddex:validate.

Renouveler une clé

Une clé ne se renouvelle pas sur place. Pour la remplacer sans interruption de service :

  1. Créez une nouvelle clé avec les mêmes scopes.
  2. Déployez-la dans votre système.
  3. Vérifiez que le trafic est passé sur la nouvelle clé. La liste des clés indique la date de dernière utilisation de chacune.
  4. Révoquez l’ancienne clé.

Révoquer une clé

Sur la page Developers, ouvrez le menu de la clé et choisissez Revoke. Elle cesse immédiatement de fonctionner et renvoie 401 key_revoked. Révoquez sans attendre une clé qui a fuité, par exemple si elle a été commitée dans un dépôt ou collée dans une conversation.

Chaque clé a aussi un journal des requêtes. Sélectionnez une clé dans la liste pour voir ses requêtes récentes : méthode, chemin, statut et heure. Les requêtes sont conservées 7 jours.

Erreurs d’authentification

Statut code Que faire
401 unauthenticated Aucun en-tête Authorization: Bearer. Ajoutez-le.
401 invalid_key La clé n’existe pas ou est mal saisie. Vérifiez l’absence d’espaces ou de valeur tronquée.
401 key_revoked La clé a été révoquée. Créez-en une nouvelle.
401 key_expired La clé a dépassé sa date d’expiration. Créez-en une nouvelle.
401 test_keys_retired Une ancienne clé hm_test_. Utilisez une clé hm_live_.
403 insufficient_scope La clé n’a pas le scope indiqué dans scope. Créez une clé qui le possède.
403 account_inactive Votre compte n’est pas actif. Contactez HILLS Music.
403 api_not_in_plan Votre offre n’inclut pas l’API. Elle est incluse dans Enterprise et Custom.

Toutes les erreurs ont la même forme. Voir Erreurs.

Protéger vos clés

  • Stockez les clés dans un gestionnaire de secrets ou dans des variables d’environnement, pas dans le code.
  • Ne placez jamais une clé dans une page web, une application mobile ou une application de bureau : n’importe qui peut l’y lire.
  • Utilisez une clé par système, pour pouvoir en révoquer une sans arrêter les autres.
  • Fixez une expiration aux clés destinées à des projets courts et à des prestataires.

Prêt à vous intégrer ?

Demandez l’accès à l’API : nous vous répondons sous 1–3 business days.