What is CORS and why does my API request fail?
CORS (Cross-Origin Resource Sharing) is a browser security policy that blocks JavaScript from reading responses from a different origin unless the server opts in with Access-Control-Allow-Origin headers. Because this REST client runs in your browser, it cannot bypass that policy. If a request fails with a network error and no status code, the API likely does not allow browser requests from openformatter.com. Use a CORS-friendly endpoint (httpbin.org, jsonplaceholder.typicode.com, dog.ceo) or call the API from your own server-side proxy.
How is this different from Postman or Insomnia?
Postman and Insomnia are native desktop apps, so they can ignore CORS, upload files, and store unlimited request collections in the cloud. This REST client is a single web page — there is nothing to install, nothing to sign up for, and nothing leaves your browser. It is ideal for quick API checks, sharing a one-off request, or testing endpoints from a locked-down workstation. For team workflows or CORS-restricted internal APIs, use a desktop client.
Can I save requests across browser sessions?
Yes — your last 10 requests are stored under the localStorage key of-rest-client-history and survive page reloads and browser restarts. Click any entry in the history list to reload that method and URL into the form. Storage is per-browser and never synced anywhere; clearing site data or using private browsing wipes it.
Why doesn’t file upload work?
You can build a multipart/form-data request, but the browser will not attach a real file picker through this tool. Modern browsers refuse multipart uploads to most third-party origins because of CORS preflight rules around Content-Type. Use a POST with a JSON body for endpoints that accept base64-encoded files, or run a desktop client when you need true file uploads.
How do I send Bearer token authentication?
Open the Auth tab, choose Bearer Token, and paste your token. The client adds an Authorization: Bearer <token> header to every request automatically — you do not need to add it under Headers. The same field works for OAuth 2.0 access tokens, JWTs, and personal access tokens (GitHub, GitLab, Linear).
Can I send GraphQL queries?
Yes. Set the method to POST, point the URL at your GraphQL endpoint (for example https://api.github.com/graphql), set body type to JSON, and send a body of the shape {"query": "{ viewer { login } }", "variables": {}}. Add Authorization: Bearer <token> via the Auth tab. The response is returned as JSON and pretty-printed in the response panel.
Are my API tokens stored on your server?
No — never. There is no server. Headers, tokens, and request bodies live only in your browser tab’s memory. Only the request method and URL of recent requests are written to localStorage (under of-rest-client-history); auth headers, body payloads, and responses are never persisted. You can verify this in DevTools → Application → Local Storage.
What is the request timeout?
There is no explicit timeout — the request runs until the browser default network timeout (typically 30–300 seconds depending on the browser and platform). Each request is wired to an AbortController, so you can click Cancel at any time and the in-flight fetch is aborted cleanly. If you need a hard timeout, send and click Cancel after your chosen interval.