For AI agents: a documentation index is available at https://docs.coverbase.com/llms.txt. This page is also available in markdown by appending .md to the URL.
A reassessment (cbrsm_...) is a draft batch of assessments to run against a set of vendors, typically prompted by a radar event or alert. It lets you curate the vendor set and choose an assessment plan, then run it, without ever opening a case.
A reassessment moves through four statuses:
A reassessment in a terminal status (
run or dismissed) is immutable.
All endpoints are org-scoped to the API key. See API conventions for shared behavior.
None of these honor
Idempotency-Key.
Create a reassessment
POST
POST /v1/reassessments201 Created. Creates a draft reassessment from a radar event with an initial vendor set. The assessment plan is optional up front; set it later with a PATCH before running.
Request body
string
required
The radar event providing context for the reassessment (
cbrevent_...).string[]
required
Vendors to include (
cbvndr_...). At least one; all must belong to the API key’s org.string
Assessment plan to run (
cbaspl_...). Optional; set later before running.string
Reassessment title.
Example request
cURL
Reassessment object
string
Reassessment ID (
cbrsm_...).string
draft, confirmed, run, or dismissed.string | null
Title.
string | null
Linked assessment plan (
cbaspl_...).string | null
Source radar event (
cbrevent_...).string[]
Radar alerts that drove the reassessment.
object[]
Per-vendor entries; see below.
integer
Unix timestamp (seconds).
integer
Unix timestamp (seconds).
vendors[] entry:
string
Vendor (
cbvndr_...).string
How the vendor joined:
matched (added at creation) or manual (added during review).boolean
Whether the vendor is in the run set.
string | null
Assessment created for this vendor once the reassessment is run.
List reassessments
GET
GET /v1/reassessmentsQuery parameters
string
Filter by status (
draft, confirmed, run, dismissed).items array of reassessment objects, newest first, with total, limit, and offset. Every match is returned in one page.
Retrieve a reassessment
GET
GET /v1/reassessments/{reassessment_id}404 reassessment_not_found.
Update a reassessment
PATCH
PATCH /v1/reassessments/{reassessment_id}422 reassessment_immutable once the reassessment is run or dismissed.
Request body
string
New title.
string
Assessment plan to run (
cbaspl_...).string
Re-link to a different radar event (
cbrevent_...).Curate the vendor set
POST
POST /v1/reassessments/{reassessment_id}/vendors{ "vendor_ids": ["cbvndr_..."] } (at least one).
POST
POST /v1/reassessments/{reassessment_id}/vendor_inclusion{ "vendor_id": "cbvndr_...", "included": false }.
Both return the refreshed reassessment object.
Confirm, dismiss, run
POST
POST /v1/reassessments/{reassessment_id}/confirmdraft reassessment to confirmed (vendor set locked in, ready to run).
POST
POST /v1/reassessments/{reassessment_id}/dismissdismissed).
POST
POST /v1/reassessments/{reassessment_id}/runrun. It can run from draft or confirmed. Requires assessment_plan_id to be set first; otherwise 400 missing_assessment_plan. This never creates a case.
When the reassessment is linked to a radar event, running it also marks that event’s signal as triaged and applies the risk impact of the linked alerts (or, if none were recorded, the event’s active alerts) to the vendors.
Example request
cURL
Error responses
Reassessment rules
GET
GET /v1/reassessment-rulesrisk_basis, the organization’s default timeline in org_timeline, and for each assessment plan its rules (risk_level_ids and interval_months) and its own timeline. It also returns a revision. Reading needs org_settings:read:org. An API key gets 403 api_key_not_allowed unless its service-account role holds it.
PUT
PUT /v1/reassessment-rulesrevision from your last read, the risk_basis, and every plan in plans; send plans: [] to clear the rules. A revision that changed since you read it returns 409 revision_conflict, and a configuration Coverbase rejects returns 422 invalid_reassessment_rules. Replacing needs org_settings:update:org. An API key gets 403 api_key_not_allowed unless its service-account role holds it.