JSON Placeholder API
Uma API REST fictícia, gratuita e ativa, com 20 recursos relacionados (users, posts, orders e mais) da qual você pode fazer fetch() direto do seu código.
GET api.jsonforge.app/placeholder/users/1Request
Endpoints
| Resource | Relation | Example |
|---|---|---|
| users | — (root) | api.jsonforge.app/placeholder/users |
| posts | userId → users | api.jsonforge.app/placeholder/posts |
| comments | postId → posts | api.jsonforge.app/placeholder/comments |
| todos | userId → users | api.jsonforge.app/placeholder/todos |
| albums | userId → users | api.jsonforge.app/placeholder/albums |
| photos | albumId → albums | api.jsonforge.app/placeholder/photos |
| categories | — (root) | api.jsonforge.app/placeholder/categories |
| products | categoryId → categories | api.jsonforge.app/placeholder/products |
| carts | userId → users | api.jsonforge.app/placeholder/carts |
| orders | customerId → customers | api.jsonforge.app/placeholder/orders |
| customers | — (root) | api.jsonforge.app/placeholder/customers |
| reviews | productId → products, userId → users | api.jsonforge.app/placeholder/reviews |
| roles | — (root) | api.jsonforge.app/placeholder/roles |
| permissions | — (root) | api.jsonforge.app/placeholder/permissions |
| notifications | userId → users | api.jsonforge.app/placeholder/notifications |
| conversations | — (root) | api.jsonforge.app/placeholder/conversations |
| messages | conversationId → conversations, senderId → users | api.jsonforge.app/placeholder/messages |
| files | ownerId → users | api.jsonforge.app/placeholder/files |
| invoices | customerId → customers | api.jsonforge.app/placeholder/invoices |
| transactions | invoiceId → invoices | api.jsonforge.app/placeholder/transactions |
O que é JSON Placeholder API?
O JSON Placeholder API é uma API REST fictícia, gratuita e ativa, da qual você pode fazer fetch() no seu próprio código sem escrever um backend. Ela é acessível na URL curta api.jsonforge.app (ou sob /api/placeholder no domínio principal — ambas funcionam de forma idêntica) e serve 20 recursos realistas e relacionados (users, posts, comments, todos, albums, photos, products, categories, carts, orders, customers, reviews, roles, permissions, notifications, conversations, messages, files, invoices e transactions), cada um com dezenas a centenas de registros determinísticos e referências cruzadas entre eles (um post tem um userId, um comment tem um postId, e assim por diante), então você obtém dados de amostra genuinamente aninhados e com aparência relacional, em vez de um punhado de linhas planas. Todo endpoint aceita GET, POST, PUT, PATCH e DELETE, e as respostas sempre incluem cabeçalhos CORS permissivos, para que você possa chamá-la direto de um projeto no navegador, um CodeSandbox ou um exercício de curso. Operações de escrita são simuladas: elas validam sua requisição e devolvem uma resposta realista, mas nada é realmente salvo.
Como usar JSON Placeholder API
- Abra o explorador abaixo, escolha um recurso (por exemplo users ou posts) e, opcionalmente, um id.
- Escolha um método HTTP — GET funciona com ou sem id; POST/PUT/PATCH/DELETE precisam de um onde a API espera (PUT/PATCH/DELETE precisam de um id, POST não).
- Para POST/PUT/PATCH, edite o corpo JSON da requisição e clique em "Try it" para enviar uma requisição real a esta API e ver a resposta ao vivo.
- Copie o snippet curl ou fetch() gerado e coloque direto no seu projeto — a URL e o método já estão preenchidos com o que você acabou de testar.
Exemplos
Listar todos os posts do usuário 1
Entrada
GET https://api.jsonforge.app/placeholder/posts?userId=1
Saída
[ { "id": 3, "userId": 1, "title": "...", "body": "..." }, { "id": 17, "userId": 1, "title": "...", "body": "..." } ]
Rota aninhada: comentários de um post específico
Entrada
GET https://api.jsonforge.app/placeholder/posts/1/comments
Saída
[ { "id": 5, "postId": 1, "name": "...", "email": "...", "body": "..." } ]
Criação simulada (não persistida)
Entrada
POST https://api.jsonforge.app/placeholder/posts Body: {"title": "Hello", "userId": 1}
Saída
{ "id": 151, "title": "Hello", "userId": 1 }
Erros comuns
- Assumir que um POST/PUT/PATCH/DELETE persiste — conferir com um GET em seguida e ficar confuso quando ele não reflete a mudança. Nada aqui é armazenado; veja o FAQ.
- Tentar /orders/1/items ou /carts/1/items esperando uma resposta de rota aninhada — items em carts e orders são campos embutidos no próprio registro, não recursos separados, então não existe tal endpoint (ele devolve 404).
- Assumir que users e customers são a mesma identidade — são intencionalmente separados: users é a identidade por trás de posts/comments/todos/messages/notifications/files, enquanto customers é a identidade do lado de comércio por trás de orders/invoices.
Por que usar esta ferramenta
- 20 recursos realistas e com referências cruzadas, com chaves estrangeiras reais e rotas aninhadas — não apenas um punhado de arrays planos e desconectados.
- Totalmente determinístico: o mesmo id sempre devolve o mesmo registro, então você pode construir uma demonstração em torno de ids específicos e ela continuará funcionando.
- Sem cadastro, sem chave de API, sem dor de cabeça com rate-limit para configurar — o CORS é aberto por padrão, então funciona de imediato em qualquer projeto no navegador.