Developer Portal
Veritas exposes a small, predictable JSON API. Bearer-token auth (Clerk) in production, dev header fallback in local.
API overview
One base URL
All endpoints share a single base URL and JSON in / JSON out. Bearer-token auth in production; dev header fallback in local.
base_url = "http://localhost:8000"
auth: Bearer <clerk_session_jwt>
| X-Dev-User-Id: dev_user_local (dev only)API keys
Programmatic access
Long-lived API keys are rolling out to Publisher and Enterprise plans. Current deployments authenticate via the same Clerk session token as the dashboard.
- • Per-key rate limits (separate from dashboard session)
- • Scoped to read / write / admin
- • Revocable from this page
Usage
This month
0API calls
Usage tracking ships with API keys. For now, your dashboard quota applies.
Rate limits
Per-session, sliding 60-second window. Authenticated requests only.
Free
5 / min
Sandbox access
Author
30 / min
Daily tools
Agency
120 / min
Team workflows
Publisher
600 / min
Editorial pipelines
Endpoints
Four surfaces. Use the same auth as the dashboard.
Book Opportunity API
Score a topic against demand, growth, competition, and opportunity signals.
POST http://localhost:8000/opportunity/scoreExample Request
{
"topic": "Roman Empire",
"category": "history"
}Example Response
{
"topic": "Roman Empire",
"category": "history",
"demand_score": 84,
"growth_score": 71,
"competition_score": 62,
"opportunity_score": 78,
"confidence": 73,
"recommendation": "Pursue with a strong narrative frame.",
"opportunity_window": "Open",
"book": {
"title": "The New Rome",
"subtitle": "Power, Decline, and Legacy",
"pattern": "empire_arc",
"category": "history",
"book_potential": 86,
"reader_curiosity": 79,
"commercial_appeal": 74,
"passes_bookstore_test": true
}
}curl -X POST "http://localhost:8000/opportunity/score" \
-H "Authorization: Bearer $CLERK_JWT" \
-H "Content-Type: application/json" \
-d '{"topic":"Roman Empire","category":"history"}'Trend Intelligence API
Pull rising, falling, emerging, and predicted trends across seventeen categories.
GET http://localhost:8000/trends?category=history&limit=8Example Request
# No body — query params only
Example Response
{
"items": [
{
"topic": "Late Antiquity",
"category": "history",
"change_pct": 38.4,
"direction": "rising"
},
{
"topic": "Mongol Empire",
"category": "history",
"change_pct": 21.7,
"direction": "rising"
},
{
"topic": "Industrial Revolution",
"category": "history",
"change_pct": 12.1,
"direction": "rising"
}
],
"plan": "free",
"limit": 10
}curl "http://localhost:8000/trends?category=history&limit=8" \
-H "Authorization: Bearer $CLERK_JWT"Title Analysis API
Score a working title across five axes with reader-appeal, suggested rewrites, and structured alternatives.
POST http://localhost:8000/title/scoreExample Request
{
"title": "The Roman Empire: A New History",
"topic": "Roman Empire"
}Example Response
{
"title": "The Roman Empire: A New History",
"overall_score": 87,
"axes": [
{
"label": "SEO",
"score": 82
},
{
"label": "Curiosity",
"score": 88
},
{
"label": "Emotion",
"score": 79
},
{
"label": "Memorability",
"score": 91
},
{
"label": "Market fit",
"score": 85
}
],
"suggested_titles": [
{
"title": "The Untold History of Roman Empire",
"score": 98,
"pattern": "untold_history"
},
{
"title": "The Secret History of Roman Empire",
"score": 96,
"pattern": "secret_history"
},
{
"title": "Roman Empire: The Untold Story",
"score": 92,
"pattern": "untold_colon"
}
]
}curl -X POST "http://localhost:8000/title/score" \
-H "Authorization: Bearer $CLERK_JWT" \
-H "Content-Type: application/json" \
-d '{"title":"The Roman Empire: A New History","topic":"Roman Empire"}'Publishing Signals API
Streaming publishing-signal feed. Designed for dashboards and trading-style UIs.
GET http://localhost:8000/signals/rising?category=finance&horizon=90dExample Request
# No body — query params only
Example Response
{
"items": [
{
"topic": "Stablecoin Banking",
"category": "finance",
"score": 88,
"change_pct": 32.1
},
{
"topic": "Family Office Mechanics",
"category": "finance",
"score": 84,
"change_pct": 18.4
},
{
"topic": "Tokenized Treasuries",
"category": "finance",
"score": 76,
"change_pct": 12.7
}
]
}curl "http://localhost:8000/signals/rising?category=finance&horizon=90d" \
-H "Authorization: Bearer $CLERK_JWT"Documentation
Full OpenAPI spec generated server-side.
Open interactive API docs →Download openapi.json