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:
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);