Real REST API which is ready to handle your HTTP requests 24/7 for free. Can be used for your demo projects, testing, learning or even educating someone else
Public & Private Endpoints
Full CRUD Support
CORS Enabled
/objects/{id}
GET https://api.restful-api.dev/objects/7
// 200 OK
{
"id": "7",
"name": "Apple MacBook Pro 16",
"data": {
"year": 2019,
"price": 1849.99,
"CPU model": "Intel Core i9",
"Hard disk size": "1 TB"
}
}
Intro
Welcome to our real REST API - a fully functional service backed by a real database. It lets you send, store, and retrieve data through real HTTP requests, providing an experience much like working with a production backend. Its flexible design allows you to create and manage custom data structures, making it easy to simulate realistic REST API behavior for any project.
Whether you’re building demos, testing features, or waiting for backend updates, this API helps you generate and test responses as if everything were already live. It offers both public and authenticated access - the public version is open for quick exploration, while the more powerful authenticated version unlocks extra features, endpoints, and flexibility to shape your own data models and collections - perfect if you want to take things a bit further.
Main HTTP Methods Support
Support all major HTTP methods: GET, POST, PUT, PATCH and DELETE.
HTTPS Support
Secure connections via SSL/TLS for all API endpoints.
Cross-Origin Requests
CORS enabled for all domains, perfect for frontend development.
Flexible Resources Schema
Design any data structures and relationships using nested JSON objects for complete flexibility.
Overridable Status Codes
Authenticated endpoints include an optional feature that lets you override the returned HTTP status code to simulate different responses.
Always Available
99.9% uptime ensures reliable access for testing anytime, anywhere.
Available Endpoints
Show endpoints for:
Description
Retrieves a list of all available collections with basic metadata. Each collection represents a logical grouping of objects (for example, phones, computers, etc.).
Collections are created automatically when an object is added via POST/collections/{collectionName}/objects. If the specified collectionName does not exist, it is created and the object is added to it.
Headers
• x-api-key
<your_api_key>required
Parameters
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
• auth-typestringqueryoptional
Optional query parameter that controls authentication for a request. Default is ?auth-type=none, meaning no authentication is required.
Set it to jwt to access endpoints that require a JSON Web Token (JWT). In that case, include the token in the Authorization: Bearer <jwt> header. You can obtain this token from the /register or /login endpoints.
Retrieves a complete list of all objects stored within a specific authenticated collection created by you. You can also use query parameters to retrieve multiple specific objects by their IDs - useful when you only need a subset of objects instead of the entire collection
Headers
• x-api-key
<your_api_key>required
Parameters
• collectionNamestringpathrequired
Name of the collection to fetch objects from. This parameter is part of the request path, replacing {collectionName} in the endpoint URL.
• idstring[]queryoptional
Optional query parameter for specifying one or more object IDs. When provided, the response includes only the specified objects and excludes all others. Supports multiple values by repeating the parameter in the query string (e.g., ?id=3&id=5&id=10)
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
• auth-typestringqueryoptional
Optional query parameter that controls authentication for a request. Default is ?auth-type=none, meaning no authentication is required.
Set it to jwt to access endpoints that require a JSON Web Token (JWT). In that case, include the token in the Authorization: Bearer <jwt> header. You can obtain this token from the /register or /login endpoints.
Fetches detailed information about a single object inside the specified authenticated collection.
Headers
• x-api-key
<your_api_key>required
Parameters
• collectionNamestringpathrequired
Name of the collection to fetch object from. This parameter is part of the request path, replacing {collectionName} in the endpoint URL.
• idstringpathrequired
The unique ID of the object to fetch from the collection.
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
• auth-typestringqueryoptional
Optional query parameter that controls authentication for a request. Default is ?auth-type=none, meaning no authentication is required.
Set it to jwt to access endpoints that require a JSON Web Token (JWT). In that case, include the token in the Authorization: Bearer <jwt> header. You can obtain this token from the /register or /login endpoints.
Creates a new object and adds it to the specified collection owned by the authenticated user.
Headers
• x-api-key
<your_api_key>required
• Content-Type
application/jsonrequired
Parameters
• collectionNamestringpathrequired
The collection where the new object should be created. This value is provided as a path parameter, replacing {collectionName} in the endpoint URL.
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
• auth-typestringqueryoptional
Optional query parameter that controls authentication for a request. Default is ?auth-type=none, meaning no authentication is required.
Set it to jwt to access endpoints that require a JSON Web Token (JWT). In that case, include the token in the Authorization: Bearer <jwt> header. You can obtain this token from the /register or /login endpoints.
Replaces an existing object completely with new data inside a specific authenticated collection.
Headers
• x-api-key
<your_api_key>required
• Content-Type
application/jsonrequired
Parameters
• collectionNamestringpathrequired
The collection that contains the object you want to fully replace. This value is provided as a path parameter, replacing {collectionName} in the endpoint URL.
• idstringpathrequired
The ID of the object to update entirely with new data. This value is provided as a path parameter, replacing {id} in the endpoint URL.
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
• auth-typestringqueryoptional
Optional query parameter that controls authentication for a request. Default is ?auth-type=none, meaning no authentication is required.
Set it to jwt to access endpoints that require a JSON Web Token (JWT). In that case, include the token in the Authorization: Bearer <jwt> header. You can obtain this token from the /register or /login endpoints.
Applies partial updates to an object in an authenticated collection without overwriting all of its fields.
Headers
• x-api-key
<your_api_key>required
• Content-Type
application/jsonrequired
Parameters
• collectionNamestringpathrequired
The collection that holds the object you want to modify partially. This value is provided as a path parameter, replacing {collectionName} in the endpoint URL.
• idstringpathrequired
The ID of the object to modify. This value is provided as a path parameter, replacing {id} in the endpoint URL.
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
• auth-typestringqueryoptional
Optional query parameter that controls authentication for a request. Default is ?auth-type=none, meaning no authentication is required.
Set it to jwt to access endpoints that require a JSON Web Token (JWT). In that case, include the token in the Authorization: Bearer <jwt> header. You can obtain this token from the /register or /login endpoints.
Removes an object permanently from the authenticated user’s collection using its unique ID.
Headers
• x-api-key
<your_api_key>required
Parameters
• collectionNamestringpathrequired
The collection that contains the object you want to delete. This value is provided as a path parameter, replacing {collectionName} in the endpoint URL.
• idstringpathrequired
The unique ID of the object to remove from the collection. This value is provided as a path parameter, replacing {id} in the endpoint URL.
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
• auth-typestringqueryoptional
Optional query parameter that controls authentication for a request. Default is ?auth-type=none, meaning no authentication is required.
Set it to jwt to access endpoints that require a JSON Web Token (JWT). In that case, include the token in the Authorization: Bearer <jwt> header. You can obtain this token from the /register or /login endpoints.
1{
2"message": "Object with id = 6, has been deleted."3}
Description
Creates a new user account in the system. Upon successful registration, this endpoint generates and returns a valid JSON Web Token (JWT) that can be used to authorize future requests to other endpoints. Many endpoints in this API optionally support authentication and can be accessed as protected endpoints by including the query parameter ?auth-type=jwt along with the JWT issued by this /register endpoint.
Headers
• x-api-key
<your_api_key>required
• Content-Type
application/jsonrequired
Parameters
• expires-innumberqueryoptional
Optional query parameter that specifies the lifetime of the generated authentication token in seconds. If omitted, the token is created with the default expiration period of 3600 seconds (one hour).
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
1{
2"token": "<jwt token returned by the server upon successful registration>",
3"tokenType": "Bearer",
4"expiresIn": 3600,
5"user": {
6"id": "123a",
7"email": "[email protected]",
8"name": "Antonio"9 }
10}
Description
Authenticates an existing user using valid credentials. Upon successful login, this endpoint generates and returns a valid JSON Web Token (JWT) that can be used to authorize future requests to other endpoints. Many endpoints in this API optionally support authentication and can be accessed as protected endpoints by including the query parameter ?auth-type=jwt along with the JWT issued by this /login endpoint.
Headers
• x-api-key
<your_api_key>required
• Content-Type
application/jsonrequired
Parameters
• expires-innumberqueryoptional
Optional query parameter that specifies the lifetime of the generated authentication token in seconds. If omitted, the token is created with the default expiration period of 3600 seconds (one hour).
• statusstring | numberqueryoptional
Optional query parameter that allows you to override the default HTTP response status code returned by the API. This is handy for testing error handling or simulating different response scenarios. You can set it either as a numeric code (for example, ?status=401) or by using a standard HTTP status name (?status=NOT_FOUND). When provided, the API returns the specified status code along with a matching response body format.
Find answers to common questions about our REST API service.
Public endpoints are open and accessible to anyone for quick testing and experimentation with the API. In some cases, they return predefined data, but in others they also allow you to create and retrieve data created by you, making them great for demos and learning. Authenticated endpoints require authentication and provide greater flexibility and control over your own data. You can create custom collections and manage objects in a secure and controlled environment that is accessible only to you or your users. To use authenticated endpoints, you need to sign in or create an account on our website to obtain your own API key. This API key must be included in the request headers (using the x-api-key header) when making requests to the authenticated API.
Yes, you can use POST, PUT, PATCH, and DELETE methods to create, update, and delete objects. This functionality is supported on both public and authenticated APIs that we provide.
Yes, the API has CORS (Cross-Origin Resource Sharing) enabled, which means you can make requests from any domain, including from your browser-based applications and localhost.
Yes, you can freely use our API for development, testing, and learning. Each user receives 50 daily requests for the Public API and 100 daily requests for the Authenticated API (reset every 24 hours). For higher limits or advanced features, we also offer Pro plans.
All standard REST API methods are supported: GET (retrieve data), POST (create new resources), PUT (update entire resources), PATCH (partial updates), and DELETE (remove resources).
Yes. Authenticated endpoints include an optional query parameter called `status` that lets you override the default HTTP status code returned by the API. This is useful when you want to test how your app handles different responses - for example, ?status=401 or ?status=NOT_FOUND. When used, the API returns the chosen status code along with a matching response body format, making it easy to simulate error handling or custom scenarios.
Yes! We’re always open to suggestions for new features, endpoints, or improvements. Feel free to share your ideas with us at [email protected]
Still have questions?
Can't find the answer you're looking for? Feel free to reach out.