Skip to main content
Back to Challenges
๐Ÿ”Œ

API Practice

REST API endpoints for testing automation practice

31 endpoints documentedยท35 practice challenges โ†’
Base URL:https://api.qa-practice.dev/api/v1

๐Ÿ”‘ Test Credentials

Email:test@example.com
Password:password123
GET
/api/v1/users

Get all users (supports ?fields=id,name for field masking)

Request:
?fields=id,name,email
Response:
{ "data": [...], "total": 3, "fields": ["id","name","email"] }
POST
/api/v1/users

Create a new user

Request:
{ "name": "John", "email": "john@example.com" }
Response:
{ "id": "4", "name": "John", ... }
GET
/api/v1/users/:id

Get user by ID

PUT
/api/v1/users/:id

Update user

Request:
{ "name": "Updated Name" }
DELETE
/api/v1/users/:id

Delete user

GET
/api/v1/posts

Get all posts (supports ?userId=1&fields=id,title)

Request:
?userId=1&fields=id,title
POST
/api/v1/posts

Create a new post

Request:
{ "userId": "1", "title": "...", "body": "..." }
GET
/api/v1/posts/:id

Get post by ID

PUT
/api/v1/posts/:id

Update post

DELETE
/api/v1/posts/:id

Delete post

GET
/api/v1/products

Get products (pagination, filtering, sorting, field masking)

Request:
?page=1&limit=10&category=electronics&fields=id,name,price
POST
/api/v1/products

Create a new product

Request:
{ "name": "...", "price": 99.99, "category": "..." }
GET
/api/v1/products/:id

Get product by ID

PUT
/api/v1/products/:id

Update product

DELETE
/api/v1/products/:id

Delete product

POST
/api/v1/auth/login

Login and get token

Request:
{ "email": "test@example.com", "password": "password123" }
Response:
{ "token": "...", "user": {...} }
POST
/api/v1/auth/register

Register new user

Request:
{ "email": "...", "password": "...", "name": "..." }
POST
/api/v1/auth/refresh

Refresh token (Bearer required)

POST
/api/v1/auth/logout

Logout (Bearer required)

GET
/api/v1/auth/me

Get current user (Bearer required)

GET
/api/v1/protected

Protected endpoint (Bearer required)

GET
/api/v1/status/:code

Returns specified HTTP status (100-599)

Request:
/api/v1/status/404
Response:
{ "status": 404, "message": "Not Found" }
GET
/api/v1/delay/:seconds

Delayed response (max 10s)

Request:
/api/v1/delay/3
GET
/api/v1/headers

Echo request headers

POST
/api/v1/echo

Echo request body

Request:
{ "any": "data" }
GET
/api/v1/tracing

W3C Trace Context - parse and propagate distributed traces

Request:
Headers: traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
Response:
{ "trace": { "parsed": {...}, "response": {...} } }
GET
/api/v1/tracing?simulate=true

Simulate distributed trace through multiple services

Request:
?simulate=true&services=api-gateway,user-service,database
Response:
{ "simulation": { "spans": [...], "totalDuration": "150ms" } }
POST
/api/v1/tracing

Propagate trace with custom tracestate values

Request:
{ "tracestate": { "vendor": "value" } }
GET
/api/v1/retry

Get retry strategies and configuration info

Request:
?strategy=aggressive
Response:
{ "currentConfig": {...}, "delaySequence": [...] }
POST
/api/v1/retry

Simulate retry scenario with exponential backoff

Request:
{ "failUntilAttempt": 2, "failWithStatus": 503 }
Response:
{ "simulation": {...}, "attempts": [...] }
PUT
/api/v1/retry

Calculate delay for specific attempt number

Request:
{ "attempt": 3, "strategy": "aggressive" }

World of QA โ€” Free automation testing practice