> ## 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.

# Vérifier une session de paiement

> Vérifie une session Checkout terminée et confirme que les crédits ont été ajoutés.

## Vue d'ensemble

Après un paiement réussi, utilisez ce point de terminaison pour vérifier que le paiement a été traité et que les crédits ont été ajoutés au compte. Utile en secours si le webhook n'a pas été traité.

<Note>
  Les crédits sont en général ajoutés automatiquement via les webhooks Stripe. Ce point de terminaison permet une vérification manuelle pour les cas limites ou une confirmation côté client.
</Note>

<Note>
  **Pour les intégrations tierces :** utilisez `GET /credits/verify-session/{sessionId}/api` avec authentification par clé d'API.
</Note>

## Authentification

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

## Paramètres de chemin

<ParamField path="sessionId" type="string" required>
  Identifiant de session Stripe Checkout renvoyé par `/credits/checkout`.
</ParamField>

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

  ```javascript JavaScript theme={null}
  const sessionId = 'cs_test_a1b2c3d4e5f6';
  const response = await fetch(
    `https://api.llmgenerator.com/api/v1/credits/verify-session/${sessionId}`,
    {
      headers: {
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
      }
    }
  );

  const data = await response.json();
  if (data.success) {
    console.log(`Added ${data.credits} credits`);
  }
  ```

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

  session_id = 'cs_test_a1b2c3d4e5f6'
  response = requests.get(
      f'https://api.llmgenerator.com/api/v1/credits/verify-session/{session_id}',
      headers={'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
  )
  data = response.json()
  print(f"Verified: {data['credits']} credits")
  ```
</RequestExample>

<ResponseExample>
  ```json Success theme={null}
  {
    "success": true,
    "credits": 500,
    "sessionId": "cs_test_a1b2c3d4e5f6"
  }
  ```

  ```json Payment Not Completed theme={null}
  {
    "success": false,
    "message": "Payment not completed"
  }
  ```
</ResponseExample>

## Champs de réponse

<ResponseField name="success" type="boolean">
  Indique si la vérification de la session a réussi.
</ResponseField>

<ResponseField name="credits" type="integer">
  Nombre de crédits issus de l'achat.
</ResponseField>

<ResponseField name="sessionId" type="string">
  Identifiant de session vérifié.
</ResponseField>

## Réponses d'erreur

<ResponseField name="400">
  Requête incorrecte : paiement non finalisé ou métadonnées de session invalides.
</ResponseField>

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

<ResponseField name="403">
  Interdit : la session n'appartient pas à l'utilisateur authentifié.
</ResponseField>

## Idempotence

Ce point de terminaison est idempotent. Si les crédits ont déjà été ajoutés (via webhook), ils ne seront pas ajoutés une seconde fois. La réponse reste un succès avec le montant en crédits.

## Déroulement type

1. L'utilisateur finalise le paiement sur Stripe
2. Stripe redirige vers votre `successUrl`
3. Appelez ce point de terminaison pour vérifier et confirmer les crédits
4. Affichez la confirmation à l'utilisateur
5. Actualisez le solde dans votre interface

<Tip>
  Bien que ce point de terminaison soit disponible, le flux recommandé est d'écouter les webhooks Stripe et de mettre à jour l'interface à partir de `/credits/balance`.
</Tip>

***

## GET /credits/verify-session/{sessionId}/api

Vérifie une session Checkout 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
```

### Paramètres de chemin

Identiques à ci-dessus.

### Réponse

Identique à ci-dessus.

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

  ```javascript JavaScript theme={null}
  const sessionId = 'cs_test_a1b2c3d4e5f6';
  const response = await fetch(
    `https://api.llmgenerator.com/api/v1/credits/verify-session/${sessionId}/api`,
    {
      headers: {
        'Authorization': 'Bearer llmgen_your_api_key_here'
      }
    }
  );

  const data = await response.json();
  if (data.success) {
    console.log(`Added ${data.credits} credits`);
  }
  ```

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

  session_id = 'cs_test_a1b2c3d4e5f6'
  response = requests.get(
      f'https://api.llmgenerator.com/api/v1/credits/verify-session/{session_id}/api',
      headers={'Authorization': 'Bearer llmgen_your_api_key_here'}
  )
  data = response.json()
  print(f"Verified: {data['credits']} credits")
  ```
</RequestExample>
