Beacon's current authenticated HTTP API is centered on creating research briefs and reading run state.
Create a private research run for the signed-in user account.
List the current account's research runs with synced workflow status.
Read one run if and only if it belongs to the current account.
Read account-scoped workflow and memory log entries.
Request body:
{
"topic": "string, required",
"objective": "string, optional",
"focus": "string, optional",
"source": "dashboard | slack | github | discord | mcp",
"depth": "quick | deep",
"timeframe": "7d | 30d | 90d | all",
"reportStyle": "executive | bullet | memo | framework",
"recurring": false,
"frameworkId": "optional framework id",
"userKeys": {
"groqApiKey": "optional",
"serpApiKey": "optional"
}
}Response shape:
{
"userId": "clerk user id",
"runId": "workflow run id",
"topic": "normalized topic",
"status": "running",
"source": "dashboard",
"recurring": false,
"runCount": 1,
"hasMemory": false,
"memoryFacts": 0,
"createdAt": "ISO timestamp",
"currentStep": "loadMemory",
"frameworkId": "market-map"
}The private briefs API is protected by Clerk auth and returns 401 when no user session exists.
Research creation is capped per IP because each run burns SerpAPI and model budget.