> ## Documentation Index
> Fetch the complete documentation index at: https://docs.llmgenerator.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Abonnement en cours

> Renvoie l’état et les détails de l’abonnement de l’utilisateur authentifié.

## Vue d'ensemble

Renvoie les informations sur l'abonnement en cours : formule, cycle de facturation et dates de renouvellement. Nécessite une authentification par session (jeton d'accès JWT).

<Note>
  **Pour les intégrations tierces :** utilisez `GET /subscriptions/current/api` avec authentification par clé d'API.
</Note>

## Authentification

<ParamField header="Authorization" type="string" required>
  Jeton d'accès JWT. Format : `Bearer YOUR_ACCESS_TOKEN`
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET https://api.llmgenerator.com/api/v1/subscriptions/current \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.llmgenerator.com/api/v1/subscriptions/current', {
    headers: {
      'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
    }
  });
  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://api.llmgenerator.com/api/v1/subscriptions/current',
      headers={'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
  )
  data = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json Active Subscription theme={null}
  {
    "hasSubscription": true,
    "subscription": {
      "plan": "professional",
      "status": "active",
      "billingCycle": "monthly",
      "currentPeriodStart": "2024-01-15T00:00:00Z",
      "currentPeriodEnd": "2024-02-15T00:00:00Z",
      "cancelAtPeriodEnd": false
    },
    "planDetails": {
      "id": "professional",
      "name": "Professional",
      "monthlyCredits": 3000,
      "price": 12.99,
      "features": [
        "3,000 credits/month",
        "Priority support",
        "Advanced analytics"
      ]
    }
  }
  ```

  ```json No Subscription theme={null}
  {
    "hasSubscription": false,
    "subscription": null,
    "planDetails": null
  }
  ```

  ```json Canceled (Still Active) theme={null}
  {
    "hasSubscription": true,
    "subscription": {
      "plan": "professional",
      "status": "active",
      "billingCycle": "monthly",
      "currentPeriodStart": "2024-01-15T00:00:00Z",
      "currentPeriodEnd": "2024-02-15T00:00:00Z",
      "cancelAtPeriodEnd": true
    },
    "planDetails": {
      "id": "professional",
      "name": "Professional",
      "monthlyCredits": 3000,
      "price": 12.99,
      "features": [...]
    }
  }
  ```
</ResponseExample>

## Champs de réponse

<ResponseField name="hasSubscription" type="boolean">
  Indique si l'utilisateur dispose d'un abonnement actif.
</ResponseField>

<ResponseField name="subscription" type="object">
  Détails de l'abonnement (`null` en l'absence d'abonnement).

  <Expandable title="Propriétés">
    <ResponseField name="plan" type="string">
      Identifiant de la formule (starter, professional, business, agency).
    </ResponseField>

    <ResponseField name="status" type="string">
      État actuel : `active`, `canceled`, `past_due` ou `trialing`.
    </ResponseField>

    <ResponseField name="billingCycle" type="string">
      Fréquence de facturation : `monthly` ou `yearly`.
    </ResponseField>

    <ResponseField name="currentPeriodStart" type="string">
      Début de la période de facturation en cours (ISO 8601).
    </ResponseField>

    <ResponseField name="currentPeriodEnd" type="string">
      Fin de la période de facturation en cours (ISO 8601).
    </ResponseField>

    <ResponseField name="cancelAtPeriodEnd" type="boolean">
      Si `true`, l'abonnement prendra fin à `currentPeriodEnd`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="planDetails" type="object">
  Informations complètes sur la formule (`null` en l'absence d'abonnement).
</ResponseField>

## États d'abonnement

| Statut     | Description                            |
| ---------- | -------------------------------------- |
| `active`   | Abonnement actif et à jour             |
| `trialing` | Période d'essai en cours               |
| `past_due` | Échec de paiement, suspension possible |
| `canceled` | Abonnement entièrement résilié         |

## Réponses d'erreur

<ResponseField name="401" type="error">
  Non autorisé : jeton manquant ou invalide.
</ResponseField>

***

## GET /subscriptions/current/api

Renvoie les informations d'abonnement avec authentification par clé d'API. Adapté aux intégrations tierces.

### Authentification

Authentification par clé d'API obligatoire. Indiquez votre clé dans l'en-tête `Authorization` :

```
Authorization: Bearer llmgen_your_api_key_here
```

### Réponse

Identique à `/subscriptions/current` ci-dessus.

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET https://api.llmgenerator.com/api/v1/subscriptions/current/api \
    -H "Authorization: Bearer llmgen_your_api_key_here"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.llmgenerator.com/api/v1/subscriptions/current/api', {
    headers: {
      'Authorization': 'Bearer llmgen_your_api_key_here'
    }
  });
  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://api.llmgenerator.com/api/v1/subscriptions/current/api',
      headers={'Authorization': 'Bearer llmgen_your_api_key_here'}
  )
  data = response.json()
  ```
</RequestExample>
