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

# Detalhes da Checkout Session

> Consulte os detalhes de uma checkout session específica

## Visão Geral

Retorna os detalhes completos de uma checkout session específica.

## Parâmetros de Path

<ParamField path="id" type="string" required>
  ID da session (ex: `cs_ABC123xyz`)
</ParamField>

## Exemplo de Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.garu.com.br/api/checkout/sessions/cs_ABC123xyz" \
    -H "Authorization: Bearer sk_test_sua_chave_api"
  ```

  ```javascript JavaScript theme={null}
  const sessionId = 'cs_ABC123xyz';

  const response = await fetch(
    'https://api.garu.com.br/api/checkout/sessions/' + sessionId,
    {
      headers: {
        'Authorization': 'Bearer ' + process.env.GARU_API_KEY
      }
    }
  );

  const result = await response.json();
  console.log('Status:', result.data.status);
  console.log('Transaction ID:', result.data.transaction_id);
  ```

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

  session_id = 'cs_ABC123xyz'

  response = requests.get(
      'https://api.garu.com.br/api/checkout/sessions/' + session_id,
      headers={'Authorization': 'Bearer ' + os.environ['GARU_API_KEY']}
  )

  data = response.json()['data']
  print('Status:', data['status'])
  print('Transaction ID:', data['transaction_id'])
  ```
</CodeGroup>

## Resposta de Sucesso

<ResponseField name="id" type="string">
  Identificador único da session
</ResponseField>

<ResponseField name="status" type="string">
  Status da session: `open`, `complete` ou `expired`
</ResponseField>

<ResponseField name="url" type="string">
  URL do checkout
</ResponseField>

<ResponseField name="product_id" type="integer">
  ID do produto
</ResponseField>

<ResponseField name="price_id" type="string">
  ID do preço de assinatura (se aplicável)
</ResponseField>

<ResponseField name="customer_email" type="string">
  Email do cliente
</ResponseField>

<ResponseField name="customer_name" type="string">
  Nome do cliente
</ResponseField>

<ResponseField name="metadata" type="object">
  Metadados personalizados
</ResponseField>

<ResponseField name="success_url" type="string">
  URL de redirecionamento de sucesso
</ResponseField>

<ResponseField name="cancel_url" type="string">
  URL de redirecionamento de cancelamento
</ResponseField>

<ResponseField name="client_reference_id" type="string">
  ID de referência do cliente
</ResponseField>

<ResponseField name="affiliate_id" type="integer">
  ID do afiliado
</ResponseField>

<ResponseField name="transaction_id" type="integer">
  ID da transação (preenchido quando `status` = `complete`)
</ResponseField>

<ResponseField name="expires_at" type="string">
  Data de expiração (ISO 8601)
</ResponseField>

<ResponseField name="completed_at" type="string">
  Data de conclusão (ISO 8601)
</ResponseField>

<ResponseField name="created_at" type="string">
  Data de criação (ISO 8601)
</ResponseField>

### Exemplo de Resposta (200 OK)

```json theme={null}
{
  "data": {
    "id": "cs_ABC123xyz",
    "status": "complete",
    "url": "https://pay.garu.com.br/pay/session/abc123...",
    "product_id": 123,
    "price_id": null,
    "customer_email": "joao@email.com",
    "customer_name": "João Silva",
    "metadata": {
      "order_id": "12345"
    },
    "success_url": "https://seusite.com/sucesso?session_id={SESSION_ID}",
    "cancel_url": "https://seusite.com/cancelado",
    "client_reference_id": "order_abc123",
    "affiliate_id": null,
    "transaction_id": 789,
    "expires_at": "2025-01-20T12:00:00.000Z",
    "completed_at": "2025-01-19T14:30:00.000Z",
    "created_at": "2025-01-19T12:00:00.000Z"
  }
}
```

## Erros Comuns

<AccordionGroup>
  <Accordion title="401 - Não autorizado">
    ```json theme={null}
    {
      "statusCode": 401,
      "message": "Unauthorized"
    }
    ```

    **Solução:** Verifique se o header `Authorization` está correto.
  </Accordion>

  <Accordion title="404 - Session não encontrada">
    ```json theme={null}
    {
      "statusCode": 404,
      "message": "Checkout session not found"
    }
    ```

    **Solução:** Verifique se o ID da session está correto e pertence ao seu vendedor.
  </Accordion>
</AccordionGroup>

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Expirar Session" icon="clock" href="/api-reference/checkout/expirar">
    Expire manualmente uma session
  </Card>

  <Card title="Listar Sessions" icon="list" href="/api-reference/checkout/listar">
    Consulte todas as suas sessions
  </Card>
</CardGroup>
