Skip to content

Making your first request

Put the key in an Authorization: Bearer header and ask for the opportunity list. There is no other credential to manage. No client ID, no token exchange, no refresh step.

Terminal window
curl https://app.prokure.ca/api/v1/opportunities \
-H "Authorization: Bearer $PROKURE_API_KEY"

That request needs the opportunities:read scope. The pk_live_ prefix is part of the credential, so send the whole string exactly as the portal displayed it.

A page of opportunities plus a cursor:

{ "items": [], "nextCursor": null }

Each item carries the opportunity id, the underlying solicitation rfp_id, the title and issuing body, the deadline, the match score, and the status. nextCursor is an opaque string. Pass it straight back as the cursor query parameter for the next page, and stop when it comes back null.

A 401 means the credential itself is wrong: the header never arrived, or the key is unknown, revoked, or expired. A 403 with insufficient_scope means the key is valid but was minted without the scope this route needs, and the message names the missing scope. Neither is worth retrying.