Skip to main content
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 portal (cbsbpt_...) is one request sent to a vendor: an assessment’s document collection and its follow-ups, a questionnaire, a findings and commitments request, an RFP, a case follow-up, or onboarding. Each request has its own link. These endpoints list the requests so your own systems can show a vendor everything still waiting on them, or sync request status into a partner portal, a CRM, or a ticketing tool. The endpoints return only requests addressed to a vendor. Org-level portals (intake, vendor search), signing portals, and obligation commitments sent to your own stakeholders are never returned. All endpoints are org-scoped to the credential: an ak_* key or an OAuth token, and need permission to read portals. See API conventions for shared behavior.

States

Each request carries a state, derived from its status, its due date, and whether you have paused it: open and overdue are the two states that need the vendor’s attention.

Request types

url is the same link the invitation email carries. Opening it still asks the recipient to sign in with an email address the request allows, so the link identifies the request; it does not grant access to it. Share it with the people you invited and it works the way the email did.
If you want each vendor to have one address for everything, turn on the centralized supplier portal. Every request keeps its own url, and the vendor also gets a single page listing all of them.

List portals

GET
GET /v1/portals
Lists requests in the API key’s org, newest first. Without filters it returns every request addressed to a vendor, paginated.

Query parameters

string
Only requests sent to this vendor (cbvndr_...). Resolve the id first with GET /v1/vendors by external_id or name.
string
Only requests in this state: open, overdue, submitted, or closed.
string
Only requests of this type.
integer
default:"50"
Page size, 1-200.
integer
default:"0"
Rows to skip.

Example request

cURL

Example response

Rows are ordered by created_at descending, with ties broken by id, so paging with offset never repeats or skips a row.

Portal object

string
Portal ID (cbsbpt_...).
string | null
A short reference the vendor also sees, such as WF-855. Set once the centralized supplier portal is on; null otherwise.
string
string
open, overdue, submitted, or closed. See States.
string
The stored status: open, analyzing, analysis_complete, submitted, or closed. Use state unless you need to tell the three open statuses apart.
string
The link the vendor uses to respond. On a branded portal domain, the link uses that domain.
string | null
The request’s title as the vendor sees it.
string
The vendor the request was sent to (cbvndr_...).
string | null
The assessment this request collects for (cbassm_...), for assessment requests.
integer | null
Unix timestamp (seconds) the response is due, or null when no due date was set.
boolean
true while you have put the request on hold. A paused request reads open, never overdue, and no reminders go out.
integer | null
Unix timestamp (seconds) of the vendor’s first submission, or null.
integer
Unix timestamp (seconds).

Retrieve a portal

GET
GET /v1/portals/{portal_id}
Returns the portal object, or 404 portal_not_found. A portal that the list would not return (one with no vendor, or of a type outside the request types) is also a 404.

Error responses

Show a vendor their open requests

The common integration: a partner or vendor portal of your own that lists everything Coverbase is waiting on from one vendor.
1

Resolve the vendor

GET /v1/vendors?external_id=<your id> returns the Coverbase vendor_id for the identifier your system holds. Match by name if you have not set external_id on your vendors yet.
2

Fetch what is waiting

GET /v1/portals?vendor_id=<vendor_id>&state=open, then the same call with state=overdue. Or fetch without state and group rows by it, which also gives you the submitted and closed history.
3

Show the link

Render each row’s display_name, due_at, and url. Mark overdue rows and paused rows so the reader knows which ones need action now.
Poll on a schedule that suits you; the list is cheap. To react to a change as it happens instead, subscribe to Assessment.* events with webhooks.