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

# Verificar sesión de pago

> Verificar una sesión de pago completada y comprobar que los créditos se hayan añadido.

## Descripción general

Tras un pago correcto, use este extremo para confirmar que el pago se procesó y que los créditos se añadieron a la cuenta. Resulta útil como respaldo si el webhook no se procesó.

<Note>
  Los créditos suelen añadirse automáticamente mediante webhooks de Stripe. Este extremo permite verificación manual en casos especiales o confirmación desde el cliente.
</Note>

<Note>
  **Para integraciones de terceros:** use `GET /credits/verify-session/{sessionId}/api` con autenticación por clave API.
</Note>

## Autenticación

<ParamField header="Authorization" type="string" required>
  Su token de acceso JWT (autenticación por sesión). Formato: `Bearer YOUR_ACCESS_TOKEN`
</ParamField>

## Parámetros de ruta

<ParamField path="sessionId" type="string" required>
  Identificador de la sesión de pago de Stripe devuelto por `/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>

## Campos de respuesta

<ResponseField name="success" type="boolean">
  Indica si la verificación de la sesión se realizó correctamente.
</ResponseField>

<ResponseField name="credits" type="integer">
  Cantidad de créditos correspondientes a la compra.
</ResponseField>

<ResponseField name="sessionId" type="string">
  Identificador de la sesión verificada.
</ResponseField>

## Respuestas de error

<ResponseField name="400">
  Solicitud incorrecta: pago no completado o metadatos de sesión no válidos.
</ResponseField>

<ResponseField name="401">
  No autorizado: token no válido o ausente.
</ResponseField>

<ResponseField name="403">
  Prohibido: la sesión no pertenece al usuario autenticado.
</ResponseField>

## Idempotencia

Este extremo es idempotente. Si los créditos ya se añadieron (vía webhook), no los volverá a añadir y seguirá devolviendo éxito con la cantidad de créditos.

## Flujo habitual

1. El usuario completa el pago en Stripe
2. Stripe redirige a su `successUrl`
3. Llame a este extremo para verificar y confirmar los créditos
4. Muestre la confirmación al usuario
5. Actualice el saldo de créditos en su interfaz

<Tip>
  Aunque este extremo está disponible, el flujo recomendado es escuchar los webhooks de Stripe y actualizar la interfaz en función del extremo `/credits/balance`.
</Tip>

***

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

Este extremo verifica una sesión de pago mediante autenticación por clave API. Adecuado para integraciones de terceros.

### Autenticación

Requiere autenticación por clave API. Incluya su clave en el encabezado `Authorization`:

```
Authorization: Bearer llmgen_your_api_key_here
```

### Parámetros de ruta

Igual que arriba.

### Respuesta

Igual que arriba.

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