Free public REST API

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. This REST API supports main HTTP methods such as GET, POST, PUT, DELETE and PATCH.


This is a real REST API that stores the data in a real database, so your created data will not be lost. The schema of our resources provides you the flexibility to create your own custom objects which can store different attributes of different types as part of a "data" field that represents a customizable JSON object. This can allow you to simulate many real application scenarios such as storing and fetching prices, dates, image URLs, simple text fields, etc.

In order to consume the data, you don't need to always create it yourself as this REST API allows you to fetch the reserved mock data via a GET request as well. However, you can also fetch custom data created by you as a single object or in bulk by providing multiple object ids as part of a single GET request.

List of all endpoints

  • GETList of all objects-



    [ { "id": "1", "name": "Google Pixel 6 Pro", "data": { "color": "Cloudy White", "capacity": "128 GB" } }, { "id": "2", "name": "Apple iPhone 12 Mini, 256GB, Blue", "data": null }, { "id": "3", "name": "Apple iPhone 12 Pro Max", "data": { "color": "Cloudy White", "capacity GB": 512 } }, { "id": "4", "name": "Apple iPhone 11, 64GB", "data": { "price": 389.99, "color": "Purple" } }, { "id": "5", "name": "Samsung Galaxy Z Fold2", "data": { "price": 689.99, "color": "Brown" } }, { "id": "6", "name": "Apple AirPods", "data": { "generation": "3rd", "price": 120 } }, { "id": "7", "name": "Apple MacBook Pro 16", "data": { "year": 2019, "price": 1849.99, "CPU model": "Intel Core i9", "Hard disk size": "1 TB" } }, { "id": "8", "name": "Apple Watch Series 8", "data": { "Strap Colour": "Elderberry", "Case Size": "41mm" } }, { "id": "9", "name": "Beats Studio3 Wireless", "data": { "Color": "Red", "Description": "High-performance wireless noise cancelling headphones" } }, { "id": "10", "name": "Apple iPad Mini 5th Gen", "data": { "Capacity": "64 GB", "Screen size": 7.9 } }, { "id": "11", "name": "Apple iPad Mini 5th Gen", "data": { "Capacity": "254 GB", "Screen size": 7.9 } }, { "id": "12", "name": "Apple iPad Air", "data": { "Generation": "4th", "Price": "419.99", "Capacity": "64 GB" } }, { "id": "13", "name": "Apple iPad Air", "data": { "Generation": "4th", "Price": "519.99", "Capacity": "256 GB" } } ]

  • GETList of objects by ids+

  • GETSingle object+

  • POSTAdd object+

  • PUTUpdate object+

  • PATCHPartially update object+

  • DELETEDelete object+

How to use it?


Send a GET request in JavaScript

In case you want to request a particular object from an API and this object already exists and you know an object ID of it, you can simply send a GET request to fetch it.

var xhr = new XMLHttpRequest(); var requestUrl = "";"GET", requestUrl, true); xhr.onload = function(){ console.log(xhr.responseText); // Handle data }; xhr.send();

In the example above we are fetching the object with id = 4. Response from an API would look like this:

{ "id": 4, "name": "Apple iPhone 11, 64GB", "data": { "price": 389.99, "color": "Purple" } }

In order to fetch another object, you can always change the object ID which comes as part of your GET request URL. For example, changing the object id from 4 to 5 will return you the following response:

{ "id": 5, "name": "Samsung Galaxy Z Fold2", "data": { "price": 689.99, "color": "Brown" } }


Send a POST request in Java

In case you want to add a new object using POST:

String body = "{\"name\": \"Apple iPad Air\", \"data\": { \"Generation\": \"4th\", \"Price\": \"519.99\", \"Capacity\": \"256 GB\" }}"; URL url = new URL(""); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("User-Agent", "Mozilla/5.0"); try (DataOutputStream dos = new DataOutputStream(conn.getOutputStream())) { dos.writeBytes(body); } try (BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream()))) { String line; while ((line = bf.readLine()) != null) { System.out.println(line); } }

Data from this request would get stored in the database and API would reply to you with a response that would look like this:

{ "id": 13, "name": "Apple iPad Air", "data": { "Generation": "4th", "Price": "519.99", "Capacity": "256 GB" }, "createdAt": "2022-11-21T20:06:23.986Z" }

Keep in mind that every time you execute this piece of code, you will create a new object with the same data but a new object id. To store unique objects, update the body of your request.

After executing a POST request, you can access the created object via GET request by providing the corresponding object id as part of a GET request url.


Send a PUT request in Python

In case you want to update the price attribute of an existing object below from 120 to 135 and to add an extra color attribute using PUT:

{ "id": 6, "name": "Apple AirPods", "data": { "generation": "3rd", "price": 120 } }

Pass a complete representation of the updated object as part of a body and the object id as part of a request url.

import requests import json headers = {"content-type": "application/json"} payload = json.dumps({ "name": "Apple AirPods", "data": { "color": "white", "generation": "3rd", "price": 135}}) requestUrl = "" r = requests.put(requestUrl, data=payload, headers=headers) print(r.content)

Response would look like this:

{ "id": 6, "name": "Apple AirPods", "data": { "color": "white", "generation": "3rd", "price": 135 } "updatedAt": "2022-11-21T20:06:23.986Z" }