Start an on-demand prospecting run
"Find me more opportunities" — kicks off one agent research run for a project the caller owns. Results land in the opportunities feed as they are verified (typically 30-45 minutes). Requires completed project onboarding.
"Find me more opportunities" — kicks off one agent research run for a project the caller owns. Results land in the opportunities feed as they are verified (typically 30-45 minutes). Requires completed project onboarding.
API key (sk_live_... prefix). Generate keys in the UI under Settings > API Keys, then send it as Authorization: Bearer sk_live_...
In: header
Request Body
application/json
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidResponse Body
application/json
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/opportunities/runs" \ -H "Content-Type: application/json" \ -d '{ "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9" }'{
"run_id": "string",
"project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9"
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}Start a check on whether an opportunity is still live POST
Runs a research agent against one opportunity: re-reads its sources, looks the record up in Bellwork's procurement corpus where relevant, and searches for current evidence. Intended to be called once per row as it crosses into a CRM, and again by hand later — there is no background re-verification sweep. ASYNCHRONOUS. Returns 202 with a `poll` URL; GET the same path for the verdict. Runs take tens of seconds because establishing a bid's real close date can take several searches. A verdict from the last 6 hours is returned immediately (200, `started: false`) unless `force=true`. The verdict has TWO parts and callers must read both — see the GET response.
The outreach inbox GET
Every message to and from this org's contacts, grouped into conversations, most recently active first — sequenced sends, one-off emails, and replies together. `district_id` and `org_contact_id` narrow it to one entity's correspondence, which is how the district and school pages read it. Gated by the `sequencer` module.