BYTETOOLS

ItsThisForThat API

Free API that returns a random 'it is X for Y' startup pitch as JSON. No key needed. Includes the content-type gotcha and a real captured response.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the ItsThisForThat API?

ItsThisForThat generates random startup pitches in the classic 'it is X for Y' format. `GET https://itsthisforthat.com/api.php?json` returns `{"this": "...", "that": "..."}` with no API key required.

Every pitch deck ever written contains the phrase 'it is Uber for something'. This API automates the joke, pairing a random technology with a random industry and returning both halves separately so you can format the sentence however you like. Keeping `this` and `that` as separate fields rather than one pre-joined string is a small design decision that makes the API genuinely reusable.

There is one trap worth knowing. The response is valid JSON but is served as `text/javascript`, a leftover from the days when this endpoint was consumed via JSONP. Strict HTTP clients that switch parsers on the content type will hand you a string instead of an object, so parse the body explicitly rather than relying on automatic detection. The endpoint also sends no CORS header, so browser calls need a proxy.

Quick facts

Base URL
https://itsthisforthat.com
Authentication
No key required. The query string flag, not a header, selects the output format.
Rate limit
Not published. It is a tiny hobby endpoint, so cache anything you fetch.
Pricing
Free.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the ItsThisForThat API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch a random pitch as JSON

GET https://itsthisforthat.com/api.php?json

curl
curl 'https://itsthisforthat.com/api.php?json'
JavaScript (fetch)
const res = await fetch("https://itsthisforthat.com/api.php?json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://itsthisforthat.com/api.php?json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "this": "Tesseract OCR engine",
  "that": "Fast Casual Restaurants"
}

Parameters

ParameterTypeRequiredDescription
jsonflagOptionalValueless flag that switches the response to JSON. Without it you get plain text. json
textflagOptionalValueless flag that returns a plain-text sentence instead of the two fields. text

Response fields

thisstring
The technology or product half of the pitch, for example `Tesseract OCR engine`.
thatstring
The market or industry half, for example `Fast Casual Restaurants`. Join the two yourself: the API never returns a formed sentence in JSON mode.

What you can build with the ItsThisForThat API

  • Generate joke content for a slide, newsletter or conference talk
  • Seed a brainstorming exercise with deliberately absurd product framings
  • Fill a placeholder card component with varying text lengths during layout testing
  • Build a Slack or Discord slash command that produces a pitch on demand
  • Demonstrate parsing JSON that arrives with a misleading content type

Common errors and how to fix them

Parsed as a string, not an object

The response is served as `text/javascript`, so some clients skip JSON parsing.

Fix: Call your JSON parser explicitly on the response body instead of relying on content-type sniffing.

CORS error in the browser

No `Access-Control-Allow-Origin` header is sent.

Fix: Fetch it from your own server and forward the result.

Plain text when you expected JSON

The `json` flag was dropped, often by a URL builder that strips valueless query parameters.

Fix: Ensure the literal `?json` survives; some HTTP clients need it passed as `json=` instead.

ItsThisForThat API — frequently asked questions

Is the ItsThisForThat API free?

Yes, with no key or signup. It is a long-running hobby project, so treat its availability as best-effort.

Why does it return text/javascript?

The endpoint predates widespread CORS support and was designed for JSONP. The body is valid JSON; only the declared content type is legacy.

Can I get a full sentence instead of two fields?

Yes, use `?text` instead of `?json`. That returns a formed sentence as plain text, which is easier if you are piping it into a chat bot.

Is the output ever offensive?

The word lists are mild and product-focused, but they are randomly paired, so review the output before putting it in front of a client.

Tools that pair with this API

ItsThisForThat is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.