Developer Documentation

OnlyTheOnline API documentation (Issues API)
Base domain: onlytheonline.com

Endpoints (at a glance)
GET /issues
Returns a list of published issues. Supports optional search via the s query parameter.

GET /issues/{issue_ref}
Returns a single published issue by numeric ID or slug.

Overview
The OnlyTheOnline Issues API lets you retrieve public metadata about published issues on onlytheonline.com. It is intended for integrations such as internal tools, issue lookups, lightweight search, and linking users back to canonical issue pages.

This API intentionally returns a minimal, stable payload (IDs, titles, slugs, canonical URLs). It does not expose private user data, internal diagnostics, or full issue-body content.

Base URL
All requests use HTTPS against:

Home

Authentication
You authenticate with an API key. Include your key in one of the following ways:

Preferred: request header
X-API-KEY: YOUR_KEY

Alternative (less secure): query parameter
?api_key=YOUR_KEY

Best practice: use the header. Avoid putting API keys in URLs because URLs can end up in logs, analytics, browser history, and referrers.

API keys
You can generate and revoke your Production Key from your OnlyTheOnline account area. Treat the key like a password:

Store it in environment variables or a secrets manager.

Never ship it in frontend JavaScript.

Rotate it immediately if you suspect exposure.

Rate limits
Requests are rate-limited per account and reset daily at 00:00 UTC.

Every successful request returns rate-limit headers:

X-RateLimit-Limit-Day: your daily limit

X-RateLimit-Remaining-Day: remaining calls for the day

You should treat “remaining” as advisory (use it for UX/monitoring, not as the sole enforcement signal). Always handle HTTP 429 responses.

Response format
All responses are JSON (UTF-8) with Content-Type: application/json.

Objects
Issue object
Returned when fetching a single issue, and inside list responses.

Fields:

id (string): API identifier for the issue (for example: “issue_123”)

title (string): issue title

slug (string): URL slug for the issue

url (string): canonical URL to view the issue on onlytheonline.com

List object
Returned when listing issues or searching.

Fields:

object (string): “list”

count (integer): number of items returned

data (array): array of Issue objects

Errors
Errors use a consistent envelope:

{
“error”: {
“status”: 401,
“type”: “missing_key”,
“message”: “API Key missing.”
}
}

You should key off:

HTTP status code (primary)

error.type (secondary, stable)

error.message (human-readable; not guaranteed stable)

Endpoints

List issues
GET /issues

Returns a list response. If no search query is provided, this endpoint may return a large result set. For most production use cases, prefer search or direct fetch by ID/slug.

Query parameters:

s (string, optional): search query

Request example (curl)

curl “https://onlytheonline.com/issues” \
-H “X-API-KEY: YOUR_KEY”

Search example (curl)

curl “https://onlytheonline.com/issues?s=elementor%20500” \
-H “X-API-KEY: YOUR_KEY”

Example response

{
“object”: “list”,
“count”: 2,
“data”: [
{
“id”: “issue_101”,
“title”: “Elementor Error 500 on Save”,
“slug”: “elementor-error-500-on-save”,
“url”: “https://onlytheonline.com/issue/elementor-error-500-on-save/”
},
{
“id”: “issue_205”,
“title”: “WordPress White Screen of Death”,
“slug”: “wordpress-white-screen-of-death”,
“url”: “https://onlytheonline.com/issue/wordpress-white-screen-of-death/”
}
]
}

Retrieve a single issue
GET /issues/{issue_ref}

Returns a single Issue object (not wrapped in a “list”).

Path parameter:

issue_ref: either the numeric issue ID or the issue slug

Request examples (curl)
By slug:

curl “https://onlytheonline.com/issues/wordpress-white-screen-of-death” \
-H “X-API-KEY: YOUR_KEY”

By numeric ID:

curl “https://onlytheonline.com/issues/205” \
-H “X-API-KEY: YOUR_KEY”

Example response

{
“id”: “issue_205”,
“title”: “WordPress White Screen of Death”,
“slug”: “wordpress-white-screen-of-death”,
“url”: “https://onlytheonline.com/issue/wordpress-white-screen-of-death/”
}

Status codes and error types
The API uses standard HTTP semantics:

200 OK
Request succeeded.

401 Unauthorized — missing_key
No API key was provided.

403 Forbidden — invalid_key
The API key is not valid.

404 Not Found — not_found
The referenced issue does not exist (single-issue endpoint).

429 Too Many Requests — limit_exceeded
You have reached your daily request limit.

429 example

{
“error”: {
“status”: 429,
“type”: “limit_exceeded”,
“message”: “Daily limit reached.”
}
}

Quickstart examples

JavaScript (Node.js / server-side fetch)

const res = await fetch(“https://onlytheonline.com/issues?s=woocommerce”, {
headers: { “X-API-KEY”: process.env.OTO_API_KEY }
});

if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(`HTTP ${res.status}: ${JSON.stringify(err)}`);
}

const data = await res.json();
console.log(data);

Python (requests)

import os
import requests

resp = requests.get(
“https://onlytheonline.com/issues”,
params={“s”: “wp cron”},
headers={“X-API-KEY”: os.environ[“OTO_API_KEY”]},
timeout=20,
)

if resp.status_code != 200:
try:
print(resp.json())
except Exception:
print(resp.text)
resp.raise_for_status()

print(resp.json())

PHP (cURL)

<?php
$key = getenv(‘OTO_API_KEY’);

$ch = curl_init(‘https://onlytheonline.com/issues?s=redis’);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [“X-API-KEY: {$key}”],
CURLOPT_TIMEOUT => 20,
]);

$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($code !== 200) {
throw new RuntimeException(“HTTP {$code}: {$body}”);
}

$data = json_decode($body, true);
print_r($data);