> ## 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 sessão de checkout

> Verifica uma sessão de checkout concluída e garante que os créditos foram creditados.

## Visão geral

Após um checkout bem-sucedido, use este endpoint para confirmar que o pagamento foi processado e os créditos adicionados à conta. Útil como alternativa caso o webhook não tenha sido processado.

<Note>
  Os créditos normalmente são creditados automaticamente via webhooks Stripe. Este endpoint oferece verificação manual para casos extremos ou confirmação no cliente.
</Note>

<Note>
  **Para integrações de terceiros:** use `GET /credits/verify-session/{sessionId}/api` com autenticação por chave de API.
</Note>

## Autenticação

<ParamField header="Authorization" type="string" required>
  Seu token de acesso JWT (auth de sessão). Formato: `Bearer YOUR_ACCESS_TOKEN`
</ParamField>

## Parâmetros de caminho

<ParamField path="sessionId" type="string" required>
  ID da sessão Stripe Checkout retornado 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 Sucesso theme={null}
  {
    "success": true,
    "credits": 500,
    "sessionId": "cs_test_a1b2c3d4e5f6"
  }
  ```

  ```json Pagamento não concluído theme={null}
  {
    "success": false,
    "message": "Payment not completed"
  }
  ```
</ResponseExample>

## Campos da resposta

<ResponseField name="success" type="boolean">
  Se a verificação da sessão foi bem-sucedida.
</ResponseField>

<ResponseField name="credits" type="integer">
  Quantidade de créditos referentes à compra.
</ResponseField>

<ResponseField name="sessionId" type="string">
  ID da sessão verificada.
</ResponseField>

## Respostas de erro

<ResponseField name="400">
  Requisição inválida — pagamento não concluído ou metadados de sessão inválidos.
</ResponseField>

<ResponseField name="401">
  Não autorizado — token ausente ou inválido.
</ResponseField>

<ResponseField name="403">
  Proibido — a sessão não pertence ao usuário autenticado.
</ResponseField>

## Idempotência

Este endpoint é idempotente. Se os créditos já foram adicionados via webhook, não há nova inclusão; ainda assim retorna sucesso com o valor dos créditos.

## Fluxo típico

1. Usuário conclui o checkout na Stripe
2. Stripe redireciona para sua `successUrl`
3. Chame este endpoint para verificar e confirmar os créditos
4. Exiba confirmação ao usuário
5. Atualize o saldo na interface

<Tip>
  Embora disponível, o fluxo recomendado é processar via webhooks Stripe e atualizar a interface com `/credits/balance`.
</Tip>

***

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

Verifica uma sessão de checkout com autenticação por chave de API. Indicado para integrações externas.

### Autenticação

```
Authorization: Bearer llmgen_your_api_key_here
```

### Parâmetros de caminho

Como acima.

### Resposta

Como acima.

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