Skip to main content
Todas as rotas do Metrito possuem rate limiting para garantir estabilidade e uso justo da plataforma.

Limites por Tier

TierLimiteJanela
API Key padrão120 req1 minuto
Growth300 req1 minuto
Enterprise1.000 req1 minuto

Headers de Resposta

Toda resposta das rotas /v3/ inclui headers de rate limit:
HeaderDescrição
X-RateLimit-LimitLimite máximo de requisições na janela
X-RateLimit-RemainingRequisições restantes na janela atual
X-RateLimit-ResetTimestamp Unix de quando a janela reseta
Retry-AfterSegundos até poder tentar novamente (apenas em 429)

Lidando com Rate Limiting

Quando o limite é excedido, a API retorna 429 Too Many Requests:
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Maximum 120 requests per 60s.",
    "request_id": "req_abc123"
  }
}
Recomendações:
  1. Respeite o header Retry-After antes de tentar novamente
  2. Implemente backoff exponencial para retries
  3. Agrupe múltiplas consultas em uma única chamada quando possível (ex: multiple fields em POST /v3/query)
  4. Cache respostas que não mudam frequentemente (GET /v3/fields)

Request ID

Toda resposta inclui o header X-Request-Id. Use este ID ao entrar em contato com o suporte.
X-Request-Id: req_k8mN2pQ4rT6wX1

Idempotência

Endpoints de escrita (POST /v3/tracking/events, POST /v3/tracking/containers/:id/events) suportam o header Idempotency-Key.
curl -X POST https://api.metrito.com/v3/tracking/events \
  -H "Authorization: Bearer mtk_live_abc123..." \
  -H "Idempotency-Key: meu-evento-unico-123" \
  -H "Content-Type: application/json" \
  -d '{ "config": { "name": "Purchase" } }'
ComportamentoDescrição
Primeira chamadaProcessa normalmente e armazena resultado
Chamada repetida (mesmo key, 24h)Retorna resultado armazenado com header X-Idempotent-Replayed: true
Após 24hKey expira, chamada é processada novamente
O Idempotency-Key é vinculado à API key. Chaves diferentes podem usar o mesmo valor sem conflito.

Formato de Erro Padronizado

Todas as rotas /v3/ retornam erros no formato:
{
  "error": {
    "type": "authentication_error",
    "code": "invalid_api_key",
    "message": "The API key provided is invalid or has been revoked.",
    "request_id": "req_abc123"
  }
}

Tipos de Erro

TipoHTTP StatusDescrição
authentication_error401Credencial ausente, inválida ou expirada
authorization_error403Permissão insuficiente (escopo)
validation_error400Parâmetro ausente ou inválido
not_found_error404Recurso não encontrado
rate_limit_error429Limite de requisições excedido
api_error500Erro interno do servidor

Códigos de Erro

CódigoDescrição
invalid_api_keyAPI key inválida ou revogada
expired_api_keyAPI key expirada
insufficient_scopeAPI key não possui o escopo necessário
rate_limit_exceededLimite de requisições excedido
invalid_parameterParâmetro de request inválido
missing_parameterParâmetro obrigatório ausente
resource_not_foundRecurso não encontrado
idempotency_conflictConflito de idempotência
internal_errorErro interno