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

# Obter logs de requisições na borda

> Obtenha logs de borda por requisição dos domínios de uma aplicação com GET /v2/apps/{app_id}/network/logs, de até 7 dias atrás. Disponível no Pro e Enterprise.

Retorna logs de borda por requisição (HTTP, país, status, bytes) para o domínio principal da aplicação e qualquer domínio personalizado configurado. A janela máxima de retenção é de 7 dias; o `start` é limitado à data de criação da aplicação.

<Info>
  Disponível apenas nos planos **Pro** e **Enterprise**. O cache miss compartilha um limite único de 20 requisições por 60 segundos por proprietário da aplicação, entre os endpoints de análise, erros, logs e performance. Respostas em cache não contam. Em períodos de alta demanda em toda a plataforma, o endpoint pode retornar os dados em cache mais recentes da janela solicitada.
</Info>

<ParamField header="Authorization" type="string" placeholder="Chave da API" required>
  A chave da API para sua conta. Você pode encontrá-la nas [configurações da conta](https://squarecloud.app/pt-br/account/security).
</ParamField>

Requer uma chave de API com o [escopo](/pt-br/api-reference/authentication#escopos) `apps:read`.

Esta é uma amostra de tráfego de borda bruto por requisição, não a saída de runtime da própria aplicação; para stdout/stderr do container, veja [Obter logs](/pt-br/api-reference/endpoint/apps/logs). Cada entrada captura o cliente (IP, país, user agent), a requisição (método, caminho, query, protocolo) e a resposta (status, content type, cache HIT/MISS) conforme visto pelo Cloudflare.

Os resultados ficam em cache em blocos de 5 minutos, o mesmo alinhamento usado por [Análise de rede](/pt-br/api-reference/endpoint/apps/network/analytics), então polling repetido de uma janela móvel reutiliza a amostra em cache em vez de buscar novamente na borda a cada chamada. Combine com [Erros de rede](/pt-br/api-reference/endpoint/apps/network/errors) para correlacionar um pico de respostas 5xx com as requisições específicas que o causaram.

## Parâmetros

<ParamField path="app_id" type="string" placeholder="ID da Aplicação" required>
  O ID da aplicação. Você pode encontrá-lo na URL da sua aplicação no dashboard.
</ParamField>

<ParamField query="start" type="string" placeholder="Timestamp ISO 8601" required>
  Timestamp inicial em formato ISO 8601. Não pode ser anterior à data de criação da aplicação ou mais antigo que 7 dias.
</ParamField>

<ParamField query="end" type="string" placeholder="Timestamp ISO 8601" required>
  Timestamp final em formato ISO 8601. Deve ser posterior ao `start`.
</ParamField>

## Resposta

<ResponseField name="status" type="string">
  Indica se a chamada foi bem-sucedida: `success` se foi, `error` se não.
</ResponseField>

<ResponseField name="response" type="array">
  O conteúdo da resposta.

  <Expandable title="Alternar objeto">
    <ResponseField name="timestamp" type="string">
      Timestamp da requisição em formato ISO.
    </ResponseField>

    <ResponseField name="client" type="object">
      Informações sobre o cliente que fez a requisição.

      <Expandable title="Alternar objeto client">
        <ResponseField name="ip" type="string | null">O endereço IP do cliente.</ResponseField>
        <ResponseField name="country" type="string | null">O código do país do cliente.</ResponseField>
        <ResponseField name="location" type="string | null">O nome do país do cliente (ex.: `Brazil`).</ResponseField>
        <ResponseField name="asn" type="string">O ASN do cliente.</ResponseField>
        <ResponseField name="agent" type="string | null">O user agent do cliente.</ResponseField>
        <ResponseField name="category" type="string | null">A categoria do cliente (ex. bot, humano).</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="request" type="object">
      Informações sobre a requisição recebida.

      <Expandable title="Alternar objeto request">
        <ResponseField name="mitigated" type="boolean">Indica se a requisição foi mitigada pelas proteções de borda.</ResponseField>
        <ResponseField name="method" type="string">Método HTTP utilizado.</ResponseField>
        <ResponseField name="host" type="string">Valor do header Host.</ResponseField>
        <ResponseField name="path" type="string">Caminho da requisição.</ResponseField>
        <ResponseField name="query" type="string | null">String de query.</ResponseField>
        <ResponseField name="protocol" type="string">Protocolo utilizado (ex. HTTP/2).</ResponseField>
        <ResponseField name="referer" type="string | null">Valor do header Referer.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="response" type="object">
      Informações sobre a resposta servida na borda.

      <Expandable title="Alternar objeto response">
        <ResponseField name="status" type="integer">Código de status HTTP retornado.</ResponseField>
        <ResponseField name="contentType" type="string | null">Content-Type da resposta.</ResponseField>
        <ResponseField name="cache" type="string | null">Status do cache (ex. HIT, MISS).</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json theme={"system"}
  {
    "status": "success",
    "response": [
      {
        "timestamp": "2025-12-01T12:00:00.000Z",
        "client": {
          "ip": "203.0.113.45",
          "country": "BR",
          "location": "Brazil",
          "asn": "12345 - Example ISP",
          "agent": "Mozilla/5.0",
          "category": null
        },
        "request": {
          "mitigated": false,
          "method": "GET",
          "host": "my-app.squareweb.app",
          "path": "/api/users",
          "query": "?limit=10",
          "protocol": "HTTP/2",
          "referer": null
        },
        "response": {
          "status": 200,
          "contentType": "application/json",
          "cache": "MISS"
        }
      }
    ]
  }
  ```
</ResponseExample>

## Erros comuns

| Código | HTTP | Significado |
| - | - | - |
| `INVALID_TIME_RANGE` | 400 | `start`/`end` estão ausentes, malformados ou invertem o intervalo de tempo. |
| `UPGRADE_REQUIRED` | 403 | Logs de análise estão disponíveis apenas nos planos Pro e Enterprise. |
| `RATE_LIMITED` | 429 | O limite compartilhado de cache misses foi atingido. Aguarde e tente novamente. |
| `UNABLE_TO_FETCH_ANALYTICS` | 500 | Falha ao obter os logs do provedor de edge. |
| `ANALYTICS_BUSY` | 503 | As análises de borda estão temporariamente ocupadas. Tente novamente em um minuto. |

## Relacionados

* CLI: [`squarecloud app network logs`](/pt-br/cli-reference/edge-analytics#squarecloud-app-network-logs)
* SDKs: [`api.apps.network.logs()`](/pt-br/sdks/js/network) (JavaScript), [`client.apps.network.logs()`](/pt-br/sdks/py/network) (Python), [`c.Apps.Network.Logs()`](/pt-br/sdks/go/network) (Go)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.