Start a check on whether an opportunity is still live
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.
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.
API key (sk_live_... prefix). Generate keys in the UI under Settings > API Keys, then send it as Authorization: Bearer sk_live_...
In: header
Path Parameters
Opportunity id
uuidQuery Parameters
Re-check even when a recent verdict exists
"true" | "false"Response Body
application/json
application/json
curl -X POST "https://loading/api/v1/opportunities/497f6eca-6276-4993-bfeb-53cbbbba6f08/refresh"{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}Read an opportunity's verification verdict GET
The stored verdict. Poll this after a POST returns 202. TWO independent verdicts, and acting on one alone will burn your reps: `verification_status` — does the CLAIM still hold? `window_status` — is there still a chance to ACT? They fail independently. A procurement page describes its bid accurately for months after the deadline passes, so a row can be `confirmed` and `closed` at the same time — the claim is true and the opportunity is dead. Treat `confirmed` + (`open` | `closing` | `durable`) as live, and nothing else. `durable` means there is nothing to expire (a standing staffing gap, an adopted law). `unreachable` means we could not settle it — unconfirmed, never confirmed. `verifying` means a run is still going.
Start an on-demand prospecting run POST
"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.