Read access to theshort.ai's curated news index for any agent running on
OpenClaw. Authenticated by API key ( X-API-Key header), billed in credits
against the developer account that owns the key. The skill exposes
topic-scoped search, tag-scoped search, full article details, and the topic /
tag catalogs the key has access to.
canonicalUrl links.Do not use this skill for opinion pieces, social media posts, or fact-checking arbitrary user-supplied claims — the index is curated news only.
Every request requires an X-API-Key header. Keys are issued from the
OpenClaw dashboard. Each key
has its own topic + tag access scope, set when the key was created.
http
X-API-Key: tsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
text
https://theshort.ai/api/external
Every successful call deducts credits from the developer account's wallet.
Credits drain in this order: PLAN_INCLUDED → PROMO → TOPUP. If a call
fails server-side, credits are refunded automatically.
OperationEndpointCost (credits)topics_list``GET /topics0tags_list``GET /tags0news_search``GET /news1news_detail``GET /news/{id}1brief_generate(future)3
If the wallet balance is insufficient the call returns HTTP 402 Payment Required with {"error":"insufficient_credits", ...}. Direct the user to
the credits panel to
top up or upgrade their plan.
GET /health#Liveness probe. Returns {"status":"ok"}. Free, unauthenticated, useful as
a connectivity check before issuing billable calls.
bash
curl https://theshort.ai/api/external/health
GET /topics#List the topic taxonomy this API key is allowed to query. Topics are
hierarchical ( tech, tech.ai, tech.cybersecurity, …). Use the returned
keys verbatim in GET /news?topic=....
bash
curl -H "X-API-Key: $TSK" https://theshort.ai/api/external/topics
Response shape:
json
[
{ "topicId": 12, "topicKey": "tech", "topicName": "Technology" },
{ "topicId": 18, "topicKey": "tech.ai", "topicName": "Artificial Intelligence" }
]
GET /tags#List the tags this key has access to. Tags are flat labels (no hierarchy) attached to news items by the editorial team. Use these for very narrow filters that topics can't express.
bash
curl -H "X-API-Key: $TSK" https://theshort.ai/api/external/tags
Response shape:
json
[
{ "tagId": 7, "tagName": "openai" },
{ "tagId": 19, "tagName": "central-banks" }
]
GET /news#The primary search endpoint. Returns the most recent news items the key has access to, optionally filtered by topic and/or tag. Multiple filters of the same kind are OR-ed; topic and tag filters are AND-ed.
Query params:
ParamTypeNotestopicrepeated stringTopic key from /topics. Repeat to OR.tagrepeated stringTag name from /tags. Repeat to OR.limitint (1–200)Max items to return. Default 50.lang``en / ru / azLanguage for the summary field. Defaults to en (English). When ru or az is requested, the summary field is populated with the Russian / Azerbaijani translation; if a translation is missing for a particular row the API transparently falls back to English so summary is never empty.bash
curl -H "X-API-Key: $TSK" \
"https://theshort.ai/api/external/news?topic=tech.ai&tag=openai&limit=10"
# Russian summaries
curl -H "X-API-Key: $TSK" \
"https://theshort.ai/api/external/news?topic=tech.ai&lang=ru&limit=10"
# Azerbaijani summaries
curl -H "X-API-Key: $TSK" \
"https://theshort.ai/api/external/news?topic=tech.ai&lang=az&limit=10"
Response shape:
json
{
"consumer": "acme-corp",
"appliedTopics": ["tech.ai"],
"appliedTags": ["openai"],
"limit": 10,
"items": [
{
"id": 12345,
"summary": "OpenAI announced ...",
"contentType": "news",
"countryCode": "US",
"sourceName": "Reuters",
"canonicalUrl": "https://reuters.com/...",
"publishedAt": "2026-04-11T08:30:00Z",
"topics": ["tech", "tech.ai"],
"tags": ["openai"]
}
]
}
The response only contains a single summary field — there is no
separate title. The first sentence of summary is the headline; treat
the whole field as the article text. If you need both English and Russian
text for the same article, make two requests: one with lang=en (or no
lang at all) and another with lang=ru.
When grounding an answer for the user, always cite canonicalUrl so
they can verify the source.
GET /news/{id}#Fetch a single news item by id. Useful when the user clicks through from a
search result. Returns the same ExternalNewsItemDTO shape as items in
GET /news — the same lang parameter applies.
Returns 404 if the item is outside the key's topic/tag scope, even if it
exists in the underlying database — this is a billable call regardless (the
key paid for the lookup).
bash
curl -H "X-API-Key: $TSK" https://theshort.ai/api/external/news/12345
curl -H "X-API-Key: $TSK" "https://theshort.ai/api/external/news/12345?lang=ru"
All errors come back as JSON with an error field and a human-readable
message. The HTTP status indicates the category:
StatusMeaningAction401Missing or invalid X-API-KeyStop. Ask the user to provide a key.402Insufficient credits in the developer walletDirect to credits panel.403Topic/tag is outside this key's scopePick a different filter.404News item not foundTry GET /news to discover valid ids.429Rate-limited (per-key quota)Back off and retry.5xxServer error — credits are auto-refundedRetry with exponential backoff.
GET /topics and GET /tags once at agent
startup (these are free) and cache the results for the session.GET /news with the user's topic of interest. Apply
limit=10 for chat replies, larger for batch jobs.GET /news/{id} for the full payload.canonicalUrl and
sourceName so the user can verify.GET /api/v1/me/billing (admin / dashboard) when the user asks "how many
credits do I have left".User: "What's happening with OpenAI today?"
Agent (internal):
GET /news?topic=tech.ai&tag=openai&limit=5- Pick the top 3 by
publishedAt.- For the most relevant:
GET /news/{id}to grab the full summary.Agent (reply): "Three things in the past 24 hours: …. Sources: Reuters, TechCrunch, The Verge."
PlanMonthly creditsPriceFREE100 (one-time)$0PRO10,000$29 / monthSCALE50,000$119 / month
Top-up packs (one-time): TOPUP_1K (1000 credits, $10), TOPUP_5K (5000,
$45), TOPUP_20K (20,000, $160). All purchases and plan changes happen
through the credits panel.