> ## 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 latência de borda e de origem

> Obtenha percentis de latência de borda e de origem com GET /v2/apps/{app_id}/network/performance, por país, colo e caminho mais lento. Para Pro e Enterprise.

Retorna percentis de tempo de resposta na borda e na origem (`p50`, `p95`, `p99`) para a aplicação em uma janela de tempo, além de detalhamento por país, por colo (data center) e pelos caminhos mais lentos. Útil para diagnosticar regressões de latência e identificar quais rotas ou regiões estão mais lentas.

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

A latência de borda (`edge`) mede o time-to-first-byte na rede do Cloudflare; a latência de origem (`origin`) mede quanto tempo a própria aplicação levou para responder depois que a borda a alcançou. Uma diferença entre as duas que cresce ao longo de uma janela geralmente aponta para a aplicação ou seu nó de cluster, enquanto ambas subindo juntas apontam para condições de rede entre o cliente e a borda.

Isso mede latência de rede, não uso de recursos do container; para CPU, RAM e banda amostrados diretamente do container, veja [Obter métricas da aplicação](/pt-br/api-reference/endpoint/apps/metrics). Combine `colos` e `countries` com [Análise de rede](/pt-br/api-reference/endpoint/apps/network/analytics) para ver se uma região lenta também tem baixo tráfego antes de priorizar uma correção.

## 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 para a janela de análise.
</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="object">
  Percentis de latência e detalhamentos para a janela analisada.

  <Expandable title="Alternar objeto response">
    <ResponseField name="summary" type="object">
      Percentis de latência agregados para toda a janela.

      <Expandable title="Alternar objeto summary">
        <ResponseField name="edge" type="object">
          Percentis de latência na borda, em milissegundos.

          <Expandable title="Alternar objeto edge">
            <ResponseField name="p50" type="integer">Percentil 50 (mediana) da latência na borda.</ResponseField>
            <ResponseField name="p95" type="integer">Percentil 95 da latência na borda.</ResponseField>
            <ResponseField name="p99" type="integer">Percentil 99 da latência na borda.</ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="origin" type="object">
          Percentis de latência na origem, em milissegundos.

          <Expandable title="Alternar objeto origin">
            <ResponseField name="p50" type="integer">Percentil 50 (mediana) da latência na origem.</ResponseField>
            <ResponseField name="p95" type="integer">Percentil 95 da latência na origem.</ResponseField>
            <ResponseField name="p99" type="integer">Percentil 99 da latência na origem.</ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="requests" type="integer">Total de requisições analisadas na janela.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="timeseries" type="array">
      Percentis de latência distribuídos em intervalos temporais ao longo da janela.

      <Expandable title="Alternar item timeseries">
        <ResponseField name="date" type="string">Timestamp inicial do intervalo, em formato ISO 8601.</ResponseField>
        <ResponseField name="requests" type="integer">Requisições observadas no intervalo.</ResponseField>
        <ResponseField name="edge" type="object">`p50`/`p95`/`p99` na borda para este intervalo.</ResponseField>
        <ResponseField name="origin" type="object">`p50`/`p95`/`p99` na origem para este intervalo.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="countries" type="array">
      Detalhamento da latência por país do cliente.

      <Expandable title="Alternar item countries">
        <ResponseField name="type" type="string">Código de país de duas letras (ex. `BR`, `US`).</ResponseField>
        <ResponseField name="p50" type="integer">Latência mediana para este país, em milissegundos.</ResponseField>
        <ResponseField name="p95" type="integer">Percentil 95 de latência para este país, em milissegundos.</ResponseField>
        <ResponseField name="requests" type="integer">Requisições servidas para este país.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="colos" type="array">
      Detalhamento da latência por colo (data center) de borda.

      <Expandable title="Alternar item colos">
        <ResponseField name="type" type="string">Identificador do colo (ex. `GRU`, `IAD`).</ResponseField>
        <ResponseField name="city" type="string">Cidade onde o colo está localizado.</ResponseField>
        <ResponseField name="country" type="string">País onde o colo está localizado.</ResponseField>
        <ResponseField name="p50" type="integer">Latência mediana neste colo, em milissegundos.</ResponseField>
        <ResponseField name="p95" type="integer">Percentil 95 de latência neste colo, em milissegundos.</ResponseField>
        <ResponseField name="requests" type="integer">Requisições servidas por este colo.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="slowest_paths" type="array">
      Caminhos com maior latência na janela.

      <Expandable title="Alternar item slowest_paths">
        <ResponseField name="path" type="string">Caminho da requisição.</ResponseField>
        <ResponseField name="p95" type="integer">Percentil 95 de latência para este caminho, em milissegundos.</ResponseField>
        <ResponseField name="p99" type="integer">Percentil 99 de latência para este caminho, em milissegundos.</ResponseField>
        <ResponseField name="requests" type="integer">Requisições observadas para este caminho.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json theme={"system"}
  {
    "status": "success",
    "response": {
      "summary": {
        "edge": { "p50": 42, "p95": 180, "p99": 320 },
        "origin": { "p50": 28, "p95": 150, "p99": 280 },
        "requests": 12450
      },
      "timeseries": [
        {
          "date": "2025-12-01T12:00:00.000Z",
          "requests": 540,
          "edge": { "p50": 41, "p95": 175, "p99": 310 },
          "origin": { "p50": 27, "p95": 148, "p99": 270 }
        }
      ],
      "countries": [
        { "type": "BR", "p50": 35, "p95": 160, "requests": 8200 },
        { "type": "US", "p50": 55, "p95": 210, "requests": 3100 }
      ],
      "colos": [
        {
          "type": "GRU",
          "city": "São Paulo",
          "country": "BR",
          "p50": 34,
          "p95": 158,
          "requests": 8100
        }
      ],
      "slowest_paths": [
        {
          "path": "/api/reports/generate",
          "p95": 820,
          "p99": 1500,
          "requests": 230
        }
      ]
    }
  }
  ```
</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 | Análises de performance 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_PERFORMANCE` | 500 | Falha ao obter os dados de performance 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 performance`](/pt-br/cli-reference/edge-analytics#squarecloud-app-network-performance)
* SDKs: [`api.apps.network.performance()`](/pt-br/sdks/js/network) (JavaScript), [`client.apps.network.performance()`](/pt-br/sdks/py/network) (Python), [`c.Apps.Network.Performance()`](/pt-br/sdks/go/network) (Go)


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