Skip to content
jsonforge.app

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/1

Request

Loading editor…

Endpoints

ResourceRelationExample
users— (root)api.jsonforge.app/placeholder/users
postsuserId → usersapi.jsonforge.app/placeholder/posts
commentspostId → postsapi.jsonforge.app/placeholder/comments
todosuserId → usersapi.jsonforge.app/placeholder/todos
albumsuserId → usersapi.jsonforge.app/placeholder/albums
photosalbumId → albumsapi.jsonforge.app/placeholder/photos
categories— (root)api.jsonforge.app/placeholder/categories
productscategoryId → categoriesapi.jsonforge.app/placeholder/products
cartsuserId → usersapi.jsonforge.app/placeholder/carts
orderscustomerId → customersapi.jsonforge.app/placeholder/orders
customers— (root)api.jsonforge.app/placeholder/customers
reviewsproductId → products, userId → usersapi.jsonforge.app/placeholder/reviews
roles— (root)api.jsonforge.app/placeholder/roles
permissions— (root)api.jsonforge.app/placeholder/permissions
notificationsuserId → usersapi.jsonforge.app/placeholder/notifications
conversations— (root)api.jsonforge.app/placeholder/conversations
messagesconversationId → conversations, senderId → usersapi.jsonforge.app/placeholder/messages
filesownerId → usersapi.jsonforge.app/placeholder/files
invoicescustomerId → customersapi.jsonforge.app/placeholder/invoices
transactionsinvoiceId → invoicesapi.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

  1. Abra o explorador abaixo, escolha um recurso (por exemplo users ou posts) e, opcionalmente, um id.
  2. 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).
  3. 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.
  4. 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.

Perguntas frequentes