Auth, data, and logs - from fetch().
No backend tickets. No Express. No Docker. ReqRes gives you data, auth, and logs you call directly with fetch() - from your existing frontend code.
The backend dependency problem
Your UI is built. The components work. But you're blocked - waiting on endpoints that aren't ready, debugging auth flows you didn't write, or testing against mock data that won't match production.
Sound familiar?
- Blocked on backend endpoints that aren't ready
- Writing mock data that doesn't match real API shapes
- Implementing auth flows with no backend to test against
- No visibility into what's happening on the server side
What this replaces in your stack
Instead of Express + Postgres + Passport + your deployment pipeline, you get one URL that handles data, auth, and logging. Standard HTTP. Nothing proprietary.
Define a schema, call it with fetch(). GET, POST, PUT, DELETE - with pagination, search, and per-user scoping built in. No ORM. No migrations.
Send a magic link, verify the token, use the session token as a Bearer header. Three API calls. No OAuth provider, no password hashing, no backend auth code to maintain.
Every request logged automatically - method, path, status, timing. Search and export from the dashboard. Webhooks fire on record events so you can trigger downstream flows without polling.
Code you already know how to write
Standard fetch(). No SDK, no vendor lock-in. Works with React, Vue, Svelte, or vanilla JS.
// The entire auth implementation. No Passport. No Auth0. No backend route handlers.
// Send magic link
await fetch('https://reqres.in/api/app-users/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'pk_...' },
body: JSON.stringify({ project_id: 'proj_12ab', email: '[email protected]' })
})
// Verify → get session token
const { session_token } = await fetch('https://reqres.in/api/app-users/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: 'token_from_email' })
}).then(r => r.json())
// session_token scopes all subsequent requests to this user.
// Use it as a Bearer header - just like any token-based auth.
// Your data layer. No Express routes. No Postgres queries. No Prisma schema.
// Create a record
await fetch('https://reqres.in/app/collections/todos/records', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${session_token}`
},
body: JSON.stringify({ data: { title: 'Ship feature', completed: false } })
})
// List records (paginated, scoped to user)
const todos = await fetch('https://reqres.in/app/collections/todos/records?limit=10', {
headers: { 'Authorization': `Bearer ${session_token}` }
}).then(r => r.json())
// → { data: [...], meta: { page: 1, limit: 10, total: 42, pages: 5 } }
// Same pattern for PUT, PATCH, DELETE. Standard REST - nothing to learn.
Built for frontend DX
Call from localhost, Vercel, Netlify - any origin. No proxy hacks.
Page, limit, total, and pages in every list response.
Standard fetch(). Works with React, Vue, Svelte, vanilla JS.
Why frontend teams switch to ReqRes
Stop waiting on backend PRs to land. Own your data layer and ship when your UI is ready.
One URL replaces Express, a database, an auth provider, and a logging service. Fewer dependencies, fewer things to break.
No more JSON Server or hardcoded mocks. Collections persist real data backed by Postgres - your staging environment works like production.
Standard HTTP. Bearer tokens. JSON in, JSON out. If you know fetch(), you already know the API.
Already using something else?
See how ReqRes compares - and where it fits alongside tools you already know.
ReqRes provides the backend surface, Postman helps you test it. Here's how they work together.
Read comparison →When to use ReqRes vs Supabase for testing, demos, and frontend-led apps.
Read comparison →When to use ReqRes vs Vercel for frontend apps, and how they complement each other.
Read comparison →Your frontend is the product. Build it that way.
Free project. No card required. Your API key appears in your dashboard.