Referência da API

O testingapis.com é uma API gratuita para testar clientes HTTP. Ela tem 360 endpoints em 53 grupos: recursos realistas como produtos, livros e países, além de endpoints para códigos de status, redirecionamentos, cookies, cache, esquemas de autenticação, formatos de arquivo, streaming e injeção de falhas. Echo, métodos HTTP, códigos de status e os recursos products, posts e todos não precisam de conta. O resto precisa de uma conta gratuita.

URL base
https://api.testingapis.com
Início rápido
fetch('https://api.testingapis.com/api/Products?limit=3')
  .then(res => res.json())
  .then(data => console.log(data))

Descoberta

O quêOnde
Documento OpenAPI 3.0https://api.testingapis.com/openapi/v1.jsonEntre para ver
Swagger UIhttps://api.testingapis.com/swagger/index.htmlEntre para ver
Catálogo de rotas ao vivoGET https://api.testingapis.com/apiEntre para ver
Health checks
GET https://api.testingapis.com/api/healthGET https://api.testingapis.com/api/health/liveGET https://api.testingapis.com/api/health/ready
GraphQL
POST https://api.testingapis.com/graphql
Queries e mutations
WebSockets
wss://api.testingapis.com/ws/echowss://api.testingapis.com/ws/ticker

Autenticação

Endpoints sem nota de autenticação são públicos. Os endpoints que testam autenticação aceitam as credenciais de teste fixas abaixo. Elas não são secretas.

EsquemaComo enviarValores de testeUsado por
HTTP BasicAuthorization: Basic base64(user:pass)apibee / password123 · Admin / Admin@1234 (API original)/api/auth/basic*, /api/AuthTest/secure-data
Bearer (static)Authorization: Bearer <token>apibee-token-123 · admin-token · user-token · readonly-token/api/auth/bearer, /api/auth/roles/*
JWTAuthorization: Bearer <jwt>POST /api/auth/jwt/login com admin / admin123 ou user / user123 · POST /api/User/Login com Michael / Thompson/api/auth/jwt/me, /api/auth/jwt/admin, /api/Admin/authorize
API keyCabeçalho X-API-Key, ?api_key= ou cookie api_keyapibee-key-123/api/auth/api-key/*
OAuth 2.0Authorization: Bearer <access_token>Clientes apibee-client / apibee-secret e apibee-public (PKCE) · usuários apibee / password123, jane / jane123/api/auth/oauth/protected, /userinfo
OAuth 1.0aAuthorization: OAuth oauth_consumer_key="…", oauth_signature="…", …Consumer apibee-consumer-key / apibee-consumer-secret · token apibee-access-token / apibee-token-secret (nunca expira) · HMAC-SHA1, HMAC-SHA256, HMAC-SHA512 ou PLAINTEXT/api/auth/oauth1, /api/auth/oauth1/*
DigestDesafio e resposta RFC 7616apibee / password123/api/auth/digest
Assinatura HMACCabeçalhos X-Timestamp e X-SignatureSegredo apibee-hmac-secret/api/auth/hmac
Cookie de sessãoCookie apibee_sessionPOST /api/cookies/login com test / test123 ou admin / admin123/api/cookies/me
CSRFCookie XSRF-TOKEN e cabeçalho X-CSRF-TokenToken de GET /api/auth/csrf/token/api/auth/csrf/submit

Um 401 quer dizer que as credenciais estão faltando ou são inválidas. Um 403 quer dizer que são válidas mas não permitidas, por exemplo user-token em /api/auth/roles/admin.

Os exemplos usam estes marcadores para valores que mudam a cada execução:

MarcadorOnde conseguir
{{userJwt}} / {{adminJwt}}accessToken de POST /api/auth/jwt/login com user / user123 ou admin / admin123.
{{refreshToken}}refreshToken de POST /api/auth/jwt/login.
{{legacyJwt}}token de POST /api/User/Login com Michael / Thompson (papel Admin).
{{oauthAccessToken}}access_token de POST /api/auth/oauth/token.
{{oauth1RequestToken}} / {{oauth1RequestSecret}} / {{oauth1Verifier}}oauth_token e oauth_token_secret de POST /api/auth/oauth1/request_token com oauth_callback=oob, depois oauth_verifier de GET /api/auth/oauth1/authorize.
{{csrfToken}}token de GET /api/auth/csrf/token. O mesmo valor é definido como o cookie XSRF-TOKEN.
{{sessionId}}Cookie apibee_session definido por POST /api/cookies/login (test / test123).
{{unixTimestamp}} / {{hmacSignature}}O horário Unix atual em segundos, e o HMAC-SHA256 em hexadecimal de "{timestamp}.{raw body}" com a chave apibee-hmac-secret.
{{uuid}}Qualquer UUID novo, usado como Idempotency-Key.

Entre para ver os detalhes

Os parâmetros, os exemplos de requisição e resposta e o painel Try it ao vivo de os endpoints de autenticação são para membros conectados. As contas são gratuitas e levam poucos segundos para criar.

Atrasos e erros simulados

Dois parâmetros de query funcionam em todos os endpoints:

ParâmetroEfeitoExemplo
delayEspera N segundos antes de responder. Máximo de 10./api/Products?delay=2
errorDevolve um erro simulado no lugar da resposta real: 400, 401, 403, 404, 408, 429, 500, 502 ou 503. Adiciona o cabeçalho X-Simulated: true./api/Products?error=503

Combinados, como em ?delay=2&error=503, a requisição espera e depois falha. Um erro simulado fica assim:

Erro simulado
{
  "status": 503,
  "error": "Service Unavailable",
  "message": "Simulated error. Use ?error={code} to test different status codes.",
  "simulated": true
}

Filtros, ordenação e paginação

Todo endpoint que lista recursos, como GET /api/Products, aceita estes parâmetros de query:

ParâmetroSignificadoExemplo
limitTamanho da página, de 1 a 100. Sem ele, todos os registros são devolvidos.?limit=10
pageNúmero da página, começando em 1. Exige limit.?limit=10&page=2
offsetPula N registros, como alternativa a page.?limit=10&offset=20
sort, orderOrdena por qualquer campo. order é asc (padrão) ou desc.?sort=price&order=desc
qBusca sem diferenciar maiúsculas nos campos title, name, body, description e text.?q=keyboard
qualquer campoFiltro exato, sem diferenciar maiúsculas, nessa propriedade.?category=books&inStock=true

As listas devolvem um array JSON simples. Os totais vêm nos cabeçalhos X-Total-Count, X-Page, X-Per-Page e X-Total-Pages. Paginação por cursor, cabeçalho Link, keyset e HAL aparece em Paginação.

Respostas e erros

SituaçãoStatusCorpo
Obter um registro200O registro
Listar registros200Array de registros, mais cabeçalhos de paginação
Criar201{ message, data }
Criar em lote201{ message, data: [ … ] }
Substituir ou atualizar200{ message, data }
Atualização parcial (PATCH)200{ message, changed, ignored, data }
Apagar200{ message }
Apagar em lote200{ message, deleted, notFound }
Erro4xx ou 5xx{ status, error, message }
Erro de validação do modelo400application/problem+json com erros por campo
Validação de negócio422application/problem+json (RFC 7807) com erros por campo
Erro
{
  "status": 404,
  "error": "Not Found",
  "message": "Book with ID 999 does not exist."
}

Toda resposta permite qualquer origem (Access-Control-Allow-Origin: *, sem credenciais) e expõe ao código do navegador os cabeçalhos de paginação, cache, limite de taxa e versionamento. Os cabeçalhos X-RateLimit-* são informativos; o limite real só acontece em Limite de taxa.

Todos os dados ficam em memória. Criar, atualizar e apagar funciona, mas tudo volta aos dados iniciais quando o servidor reinicia.

Chamadas pelo navegador

  • Cookies. Os navegadores não deixam o JavaScript definir o cabeçalho Cookie, e requisições cross-origin não levam credenciais. Endpoints baseados em cookies só funcionam a partir da mesma origem ou pelo proxy.
  • Redirecionamentos. fetch() segue redirecionamentos e esconde a resposta 3xx. Para ver o status real e o cabeçalho Location, use o proxy.
  • Proxy. POST /api/Proxy/call encaminha uma requisição a partir do servidor e devolve o status e o corpo dela. Evita os limites de CORS, cookies e redirecionamentos, mas não repassa os cabeçalhos da resposta.
  • Streams. /api/stream/sse é Server-Sent Events. Os streams NDJSON, chunked, drip e de array JSON chegam aos poucos; leia-os com um leitor de streaming.
  • WebSockets. /ws/echo e /ws/ticker precisam da API WebSocket, não de fetch.
  • Autenticação Digest. Os navegadores só fazem o desafio e a resposta pela própria janela de login.
  • Injeção de falhas. /api/chaos/abort e /api/chaos/partial derrubam a conexão de propósito. /api/chaos/timeout e /api/chaos/slow podem levar até 60 segundos.
  • Cabeçalhos proibidos. Os navegadores se recusam a definir Host, Content-Length, Accept-Encoding, Cookie e alguns outros.

Entre para ver os detalhes

Os parâmetros, os exemplos de requisição e resposta e o painel Try it ao vivo de estas notas são para membros conectados. As contas são gratuitas e levam poucos segundos para criar.

Endpoints

360 endpoints em 53 grupos. Cada grupo abre a sua referência, com parâmetros e exemplos de requisições e respostas.

Comece aqui

4 endpoints

Um catálogo ao vivo de todos os endpoints, mais health checks.