v1 · base https://editorhq.innof.com/api · JSON in/out
Authorization: Bearer ehq_live_xxxxxxxx_yyyyyyyyyyyy...
| Method | Path | Description |
|---|---|---|
| GET | /v1/health | Public service health & tenant liveness |
| GET | /v1/{pub}/briefs/latest | Today's curated edition (cached, <5ms) |
| GET | /v1/{pub}/briefs/{date} | Specific historical edition snapshot |
| GET | /v1/{pub}/clusters?window=48h&q= | Deduplicated story clusters from feeds |
| GET | /v1/{pub}/alerts/live | Passage and breaking alerts |
| GET | /v1/{pub}/articles | AI-generated articles + confidence scores |
| GET | /v1/{pub}/review | Articles queued for human editorial review |
| GET | /v1/{pub}/publish/status/{date} | Poll async website deployment status |
| GET | /v1/{pub}/usage | Metered usage and quota metrics (30 days) |
| POST | /v1/{pub}/curate | Trigger feed ingestion & clustering {hours:8} |
| POST | /v1/{pub}/autopilot | Full automated curation + draft generation |
| POST | /v1/{pub}/publish | Publish edition to site (202 Accepted + async build) |
| POST | /v1/{pub}/articles/{id}/approve | Editor gate: approve & release article |
| POST | /v1/{pub}/blocklist | Add keyword / source blocklist rule |
| POST | /v1/{pub}/webhooks | Register webhook endpoint {url, secret, events} |
To publish a curated daily edition directly to the tenant's Astro / SSR production site with automatic OG generation:
POST /v1/bangla24/publish
Content-Type: application/json
Authorization: Bearer $EHQ_KEY
{
"site": "bangla24",
"date": "2026-09-03",
"intro": "দিনের শীর্ষ সংবাদ সারসংক্ষেপ...",
"og_image_base64": "data:image/png;base64,iVBORw0KGgo...",
"homepage_leads": [
{ "headline": "...", "category": "জাতীয়", "lead": "...", "sources": [...] }
],
"full_briefs": [
{ "id": "b1", "headline": "...", "summary": "...", "sources": [...] }
]
}
{
"status": "deploying",
"publication_id": "bangla24",
"edition_date": "2026-09-03",
"briefs_count": 26,
"poll": "/v1/bangla24/publish/status/2026-09-03",
"request_id": "a1b2c3d4-5678"
}
Poll GET /v1/{pub}/publish/status/{date} until state: "live".
Every response carries X-Request-Id and X-Tenant-Fingerprint for security auditability and leak tracing. Token-bucket rate limiting (120 req/min default). On quota breach: 429 Too Many Requests with Retry-After header.
Events: brief.ready, article.ready, article.needs_review, quota.low. Signed with HMAC-SHA256:
X-EditorHQ-Signature: sha256=HMAC_SHA256(secret, body)
# 1. Fetch latest daily brief curl -H "Authorization: Bearer $EHQ_KEY" https://editorhq.innof.com/api/v1/bangla24/briefs/latest # 2. Check publish status curl -H "Authorization: Bearer $EHQ_KEY" https://editorhq.innof.com/api/v1/bangla24/publish/status/2026-09-03
const res = await fetch('https://editorhq.innof.com/api/v1/bangla24/briefs/latest', {
headers: { 'Authorization': 'Bearer ' + apiKey }
});
const edition = await res.json();
console.log('Today Briefs:', edition.briefs);
<?php
$ch = curl_init('https://editorhq.innof.com/api/v1/bangla24/briefs/latest');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('EHQ_KEY')]
]);
$data = json_decode(curl_exec($ch), true);
$briefs = $data['briefs'] ?? [];
?>
Sandbox keys (ehq_test_) run identical pipeline logic with deterministic mock generation — completely free of LLM token costs.
© 2026 EditorHQ · INNOF · v1 stability: breaking changes go to /v2/