API JSON Placeholder
Una API REST falsa, gratuita y en vivo con 20 recursos relacionados (users, posts, orders y más) a la que puedes hacer fetch() desde tu propio 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 |
¿Qué es API JSON Placeholder?
JSON Placeholder API es una API REST falsa, gratuita y en vivo a la que puedes hacer fetch() desde tu propio código sin escribir un backend. Es accesible en la URL corta api.jsonforge.app (o bajo /api/placeholder en el dominio principal — ambas funcionan idénticamente) y sirve 20 recursos realistas y relacionados (users, posts, comments, todos, albums, photos, products, categories, carts, orders, customers, reviews, roles, permissions, notifications, conversations, messages, files, invoices y transactions), cada uno con decenas o cientos de registros deterministas y referencias cruzadas entre ellos (un post tiene un userId, un comment tiene un postId, etc.), de modo que obtienes datos de muestra genuinamente anidados y de aspecto relacional en lugar de un puñado de filas planas. Cada endpoint soporta GET, POST, PUT, PATCH y DELETE, y las respuestas incluyen siempre cabeceras CORS permisivas para que puedas llamarla directamente desde un proyecto en el navegador, un CodeSandbox o un ejercicio de un curso. Las operaciones de escritura se simulan: validan tu petición y devuelven una respuesta realista, pero nunca se guarda nada.
Cómo usar API JSON Placeholder
- Abre el explorador de abajo, elige un recurso (p. ej. users o posts) y, opcionalmente, un id.
- Elige un método HTTP — GET funciona con o sin id; POST/PUT/PATCH/DELETE necesitan uno donde la API lo espera (PUT/PATCH/DELETE necesitan id, POST no).
- Para POST/PUT/PATCH, edita el cuerpo JSON de la petición y pulsa "Probar" para enviar una petición real a esta API y ver la respuesta en vivo.
- Copia el snippet curl o fetch() generado y suéltalo directamente en tu proyecto — la URL y el método ya están rellenados con lo que acabas de probar.
Ejemplos
Listar todos los posts del usuario 1
Entrada
GET https://api.jsonforge.app/placeholder/posts?userId=1
Salida
[ { "id": 3, "userId": 1, "title": "...", "body": "..." }, { "id": 17, "userId": 1, "title": "...", "body": "..." } ]
Ruta anidada: comentarios de un post concreto
Entrada
GET https://api.jsonforge.app/placeholder/posts/1/comments
Salida
[ { "id": 5, "postId": 1, "name": "...", "email": "...", "body": "..." } ]
Creación simulada (no se persiste)
Entrada
POST https://api.jsonforge.app/placeholder/posts Body: {"title": "Hello", "userId": 1}
Salida
{ "id": 151, "title": "Hello", "userId": 1 }
Errores comunes
- Asumir que un POST/PUT/PATCH/DELETE persiste — comprobarlo con un GET posterior y confundirse cuando no refleja el cambio. Aquí no se almacena nada; consulta las preguntas frecuentes.
- Probar /orders/1/items o /carts/1/items esperando una respuesta de ruta anidada — los items de carts y orders son campos incrustados en el propio registro, no recursos separados, así que no existe ese endpoint (da 404).
- Asumir que users y customers son la misma identidad — son deliberadamente separados: users es la identidad detrás de posts/comments/todos/messages/notifications/files, mientras que customers es la identidad del lado de comercio detrás de orders/invoices.
Por qué usar esta herramienta
- 20 recursos realistas con referencias cruzadas, claves foráneas reales y rutas anidadas — no solo un puñado de arrays planos y desconectados.
- Completamente determinista: el mismo id devuelve siempre el mismo registro, así que puedes montar una demo sobre ids concretos y seguirá funcionando.
- Sin registro, sin clave de API, sin quebraderos de cabeza con límites de peticiones — CORS está abierto por defecto, así que funciona desde cualquier proyecto de navegador de inmediato.