Skip to main content
Send Web Request

Test API Endpoint — Free Sample REST API for Testing | Send Web Request

Copy a URL, paste it into your code, and you get the answer below. Every endpoint is free, needs no key, and works straight from the browser.

Sample data

  • GEThttps://sendwebrequest.com/mock/users

    A list of fake users. Returns 10 by default — add ?limit= for fewer or more (up to 100).

    [
      {
        "id": 1,
        "name": "Ada Lovelace",
        "username": "ada.lovelace",
        "email": "ada.lovelace@example.com",
        "phone": "1-770-107-1013",
        "website": "ada.lovelace.example.com",
        "company": "Bytewave"
      },
      {
        "id": 2,
        "name": "Alan Turing",
        "username": "alan.turing",
        "email": "alan.turing@example.com",
        "phone": "1-770-114-1026",
        "website": "alan.turing.example.com",
        "company": "Nullpointer"
      }
      // ...8 more
    ]
  • GEThttps://sendwebrequest.com/mock/users/1

    One fake user.

    {
      "id": 1,
      "name": "Ada Lovelace",
      "username": "ada.lovelace",
      "email": "ada.lovelace@example.com",
      "phone": "1-770-107-1013",
      "website": "ada.lovelace.example.com",
      "company": "Bytewave"
    }
  • GEThttps://sendwebrequest.com/mock/posts/1

    One fake blog post.

    {
      "id": 1,
      "userId": 1,
      "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
      "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt, ut labore et dolore magna aliqua, ut enim ad minim veniam. Ut labore et dolore magna aliqua, ut enim ad minim veniam, quis nostrud exercitation ullamco, laboris nisi ut aliquip ex ea, commodo consequat duis aute irure."
    }
  • GEThttps://sendwebrequest.com/mock/todos/1

    One fake to-do item.

    {
      "id": 1,
      "userId": 1,
      "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt, ut labore et dolore magna aliqua",
      "completed": false
    }

Request tools

  • POSThttps://sendwebrequest.com/echo

    Sends your request back to you — method, headers, query, and body. Works with any method.

    {
      "method": "POST",
      "path": "/echo",
      "query": {},
      "headers": {
        "content-type": "application/json"
      },
      "body": "{ \"hello\": \"world\" }"
    }
  • GEThttps://sendwebrequest.com/status/404

    Returns any status code you ask for. Try /status/500, /status/403, and so on.

    {
      "status": 404,
      "message": "Not Found"
    }
  • GEThttps://sendwebrequest.com/delay/2

    Waits, then answers. Good for testing loading states. Up to 5 seconds.

    {
      "delay": 2,
      "message": "Waited 2 seconds"
    }

When you're wiring up fetch, axios, or React Query, you need a real endpoint to hit — one that returns predictable JSON, lets you force error codes, and doesn't need an API key. Send Web Request hosts a free, CORS-open test API you can call from any browser or codebase. Get sample data, echo your request back, return any status code, or add a delay to test loading states.

What is a test API endpoint?

A test API endpoint is a public URL that returns predictable data so you can build and debug a client without a real backend. You point your fetch or axios call at it, confirm your request is shaped correctly, and check how your UI handles the response. Because it's CORS-open, you can call it straight from browser JavaScript — no proxy, no key, nothing to install.

The endpoints

Four families of endpoints cover the common testing needs. All accept any HTTP method and are open to cross-origin requests:

GET  https://sendwebrequest.com/mock/users/1   → sample JSON
ANY  https://sendwebrequest.com/echo            → your request, reflected back
GET  https://sendwebrequest.com/status/404      → responds with that status code
GET  https://sendwebrequest.com/delay/3         → responds after ~3 seconds

Get sample JSON data

The /mock endpoints serve fake but realistic users, posts, and todos. Request a whole collection or a single item by id. Nothing is stored — the same URL always returns the same data.

GET https://sendwebrequest.com/mock/users
GET https://sendwebrequest.com/mock/users/1
GET https://sendwebrequest.com/mock/posts
GET https://sendwebrequest.com/mock/todos?limit=5

Test fetch

Drop the endpoint straight into a fetch call. It returns JSON with an application/json content type, so response.json() just works:

const res = await fetch("https://sendwebrequest.com/mock/users/1");
const user = await res.json();
console.log(user.name); // "Ada Lovelace"

Test axios

Same endpoint, with axios:

import axios from "axios";

const { data } = await axios.get(
  "https://sendwebrequest.com/mock/posts?limit=3"
);
console.log(data.length); // 3

Test React Query

Point a useQuery hook at the endpoint to exercise loading, success, and error states. Use the /delay endpoint to see the loading state for a beat, or /status/500 to trigger the error path and test retries:

const { data, isLoading, error } = useQuery({
  queryKey: ["users"],
  queryFn: () =>
    fetch("https://sendwebrequest.com/mock/users").then((r) => r.json()),
});

Echo your request back

Not sure your client is sending the right headers or body? POST to /echo and it reflects your method, headers, query string, and body back as JSON — the fastest way to confirm what actually went over the wire.

POST https://sendwebrequest.com/echo
Content-Type: application/json

{ "hello": "world" }

Force any status code

Test how your app handles errors by asking for a specific status. /status/404 returns a 404, /status/500 a 500, and so on — handy for exercising error boundaries and retry logic.

Is it free? Do I need an API key?

It's free and there's no key, no signup, and no rate-limit sign-up wall. The endpoints are stateless and CORS-open, so you can call them from a browser, a Node script, a test suite, or a tutorial. There are light caps (a max delay of 5 seconds and a capped echo body) to keep it fast for everyone.

Try it now

Open Send Web Request with a test endpoint pre-filled, hit Send, and see the response instantly. Then swap in your own API whenever you're ready.