Vérifier et accorder l'accès à un abonnement depuis votre backend
Depuis votre backend, utilisez l’API côté serveur d’Adapty pour vérifier si un utilisateur a un abonnement actif et accorder l’accès manuellement. Ce guide couvre les deux appels les plus courants — getProfile et grantAccessLevel — et montre comment demander à un agent IA d’écrire l’intégration pour votre stack.
Vous utilisez un agent IA ? Cliquez sur Copy for LLM sous le titre et collez toute cette page dans votre agent — il y trouvera les appels, les champs et les points de vigilance dont il a besoin.
Avant de commencer
- Une clé API secrète : retrouvez-la dans App settings → General, dans le champ Secret key. Les clés sont spécifiques à chaque app. Stockez-la dans une variable d’environnement (par exemple,
ADAPTY_SECRET_KEY) et envoyez-la viaAuthorization: Api-Key {key}. - L’URL de base : toutes les requêtes vont vers
https://api.adapty.io. - Un moyen d’identifier l’utilisateur : envoyez soit
adapty-customer-user-id(votre propre identifiant utilisateur — fonctionne uniquement si vous identifiez les utilisateurs dans l’app) soitadapty-profile-id(l’identifiant de profil Adapty). Ils sont interchangeables ; utilisez l’un ou l’autre.
Vérifier un abonnement
Pour vérifier le statut, appelez getProfile avec GET et passez l’identifiant utilisateur dans un header — il n’y a pas de corps de requête.
const res = await fetch("https://api.adapty.io/api/v2/server-side-api/profile/", {
headers: {
"Authorization": `Api-Key ${process.env.ADAPTY_SECRET_KEY}`,
"adapty-customer-user-id": userId,
},
});
const { data } = await res.json();
function hasActiveAccess(profile, accessLevelId = "premium") {
const level = profile.access_levels?.find(a => a.access_level_id === accessLevelId);
if (!level) return false;
if (level.is_in_grace_period) return true;
if (!level.expires_at) return true; // lifetime / non-expiring
return new Date(level.expires_at) > new Date(); // not expired yet
}
if (hasActiveAccess(data)) {
// unlock premium features
}
Contrairement au profil SDK, la réponse côté serveur n’a pas de champ is_active. Déduisez le statut vous-même à partir de access_levels[].expires_at : null signifie un accès à vie, une date future signifie actif, et une date passée signifie expiré. Traitez is_in_grace_period comme toujours actif. Pour la liste complète des champs du profil et des niveaux d’accès, consultez getProfile.
Accorder l’accès manuellement
Pour débloquer des fonctionnalités payantes sans achat — codes promo, accès investisseur ou bêta, cas de support — appelez grantAccessLevel avec POST.
await fetch("https://api.adapty.io/api/v2/server-side-api/purchase/profile/grant/access-level/", {
method: "POST",
headers: {
"Authorization": `Api-Key ${process.env.ADAPTY_SECRET_KEY}`,
"adapty-customer-user-id": userId,
"Content-Type": "application/json",
},
body: JSON.stringify({ access_level_id: "premium" }), // add "expires_at" for temporary access
});
Deux points à garder à l’esprit :
- Le niveau d’accès doit déjà exister dans votre tableau de bord (Access levels) —
access_level_idest son identifiant, pas un nouveau nom. - Les accords manuels n’apparaissent pas dans les analytics. Ils sont transmis uniquement à votre intégration webhook et à l’Event Feed, donc les graphiques de revenus et de conversion ne les reflèteront pas.
Pour les détails de la requête et de la réponse, consultez grantAccessLevel.
Construire l’intégration avec votre agent IA
Donnez à votre agent IA ce guide et la spécification API en Markdown (ajoutez .md à n’importe quelle URL de page), indiquez-lui votre stack, et laissez-le écrire les appels :
Exemple de prompt :
Using the Adapty server-side API spec, write backend functions to check whether a
user has an active "premium" access level (GET /profile/, derive status from
expires_at — there's no is_active field) and to grant it (grantAccessLevel).
Authenticate with ADAPTY_SECRET_KEY and identify users by adapty-customer-user-id.
L’agent écrit le code, mais il ne peut pas exécuter votre backend ni configurer vos clés — vous fournissez la clé secrète et les identifiants utilisateurs.
Limites
- Limite de débit : jusqu’à 40 000 requêtes par minute et par app.
- Clés spécifiques à chaque app : chaque clé fonctionne pour une seule app ; utilisez la clé correspondante par app.
- Un identifiant requis : chaque requête nécessite
adapty-customer-user-idouadapty-profile-id.