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.
https://api.testingapis.comfetch('https://api.testingapis.com/api/Products?limit=3')
.then(res => res.json())
.then(data => console.log(data))Descoberta
| O quê | Onde |
|---|---|
| Documento OpenAPI 3.0 | https://api.testingapis.com/openapi/v1.jsonEntre para ver |
| Swagger UI | https://api.testingapis.com/swagger/index.htmlEntre para ver |
| Catálogo de rotas ao vivo | GET 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 | |
| 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.
| Esquema | Como enviar | Valores de teste | Usado por |
|---|---|---|---|
| HTTP Basic | Authorization: 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/* |
| JWT | Authorization: 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 key | Cabeçalho X-API-Key, ?api_key= ou cookie api_key | apibee-key-123 | /api/auth/api-key/* |
| OAuth 2.0 | Authorization: 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.0a | Authorization: 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/* |
| Digest | Desafio e resposta RFC 7616 | apibee / password123 | /api/auth/digest |
| Assinatura HMAC | Cabeçalhos X-Timestamp e X-Signature | Segredo apibee-hmac-secret | /api/auth/hmac |
| Cookie de sessão | Cookie apibee_session | POST /api/cookies/login com test / test123 ou admin / admin123 | /api/cookies/me |
| CSRF | Cookie XSRF-TOKEN e cabeçalho X-CSRF-Token | Token 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:
| Marcador | Onde 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âmetro | Efeito | Exemplo |
|---|---|---|
delay | Espera N segundos antes de responder. Máximo de 10. | /api/Products?delay=2 |
error | Devolve 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:
{
"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âmetro | Significado | Exemplo |
|---|---|---|
limit | Tamanho da página, de 1 a 100. Sem ele, todos os registros são devolvidos. | ?limit=10 |
page | Número da página, começando em 1. Exige limit. | ?limit=10&page=2 |
offset | Pula N registros, como alternativa a page. | ?limit=10&offset=20 |
sort, order | Ordena por qualquer campo. order é asc (padrão) ou desc. | ?sort=price&order=desc |
q | Busca sem diferenciar maiúsculas nos campos title, name, body, description e text. | ?q=keyboard |
qualquer campo | Filtro 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ção | Status | Corpo |
|---|---|---|
| Obter um registro | 200 | O registro |
| Listar registros | 200 | Array de registros, mais cabeçalhos de paginação |
| Criar | 201 | { message, data } |
| Criar em lote | 201 | { message, data: [ … ] } |
| Substituir ou atualizar | 200 | { message, data } |
| Atualização parcial (PATCH) | 200 | { message, changed, ignored, data } |
| Apagar | 200 | { message } |
| Apagar em lote | 200 | { message, deleted, notFound } |
| Erro | 4xx ou 5xx | { status, error, message } |
| Erro de validação do modelo | 400 | application/problem+json com erros por campo |
| Validação de negócio | 422 | application/problem+json (RFC 7807) com erros por campo |
{
"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/callencaminha 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/echoe/ws/tickerprecisam 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/aborte/api/chaos/partialderrubam a conexão de propósito./api/chaos/timeoute/api/chaos/slowpodem 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 endpointsUm catálogo ao vivo de todos os endpoints, mais health checks.
Fundamentos de HTTP
44 endpointsMétodos, códigos de status, redirecionamentos, cookies, cache e corpos de requisição.
Formatos e dados
62 endpointsTipos de conteúdo comuns, downloads de arquivos, casos extremos de JSON e utilitários.
Autenticação e segurança
38 endpointsEsquemas de autenticação, OAuth 2.0 e 1.0a, JWT, limite de taxa e pagamentos.
Padrões de API
50 endpointsStreaming, WebSockets, jobs assíncronos, paginação, injeção de falhas e mais.
Recursos
142 endpointsConjuntos de dados realistas como produtos, posts, livros e países.
API original
20 endpointsA primeira versão da API: usuários em JSON e XML, uploads e testes de autenticação.