Skip to content

/api/v1/opportunities

GET
/api/v1/opportunities
curl --request GET \
--url 'https://app.prokure.ca/api/v1/opportunities?sort=score&limit=25'
status
Array<string>
Allowed values: scored screened notified draft_requested draft_sent approved archived
q
string
>= 1 characters <= 200 characters
source
string
>= 1 characters <= 40 characters
deadline_before
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/
deadline_after
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/
min_score
number
<= 100
sort
string
default: score
Allowed values: score deadline discovered_at
cursor
string
<= 300 characters
limit
integer
default: 25 >= 1 <= 100

Default Response

Media typeapplication/json
object
items
required
Array<object>
object
id
required
string
rfp_id
required
string
title
required
string
issuing_body
required
string
source
required
string
deadline
required
Any of:
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/
estimated_value
required
Any of:
number
score
required
Any of:
number
score_source
required
Any of:
string
status
required
string
archived_at
required
Any of:
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/
product_match_name
required
Any of:
string
discovered_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/
nextCursor
required
Any of:
string
Examplegenerated
{
"items": [
{
"id": "example",
"rfp_id": "example",
"title": "example",
"issuing_body": "example",
"source": "example",
"deadline": "2026-04-15T12:00:00Z",
"estimated_value": 1,
"score": 1,
"score_source": "example",
"status": "example",
"archived_at": "2026-04-15T12:00:00Z",
"product_match_name": "example",
"discovered_at": "2026-04-15T12:00:00Z"
}
],
"nextCursor": "example"
}

Default Response

Media typeapplication/json
object
error
required
string
Allowed values: unauthorized forbidden no_membership membership_disabled unverified_email identity_conflict insufficient_scope validation_failed not_found rate_limited internal
message
required
string
requestId
required
string
issues
Array
Example
{
"error": "unauthorized"
}

Default Response

Media typeapplication/json
object
error
required
string
Allowed values: unauthorized forbidden no_membership membership_disabled unverified_email identity_conflict insufficient_scope validation_failed not_found rate_limited internal
message
required
string
requestId
required
string
issues
Array
Example
{
"error": "unauthorized"
}

Default Response

Media typeapplication/json
object
error
required
string
Allowed values: unauthorized forbidden no_membership membership_disabled unverified_email identity_conflict insufficient_scope validation_failed not_found rate_limited internal
message
required
string
requestId
required
string
issues
Array
Example
{
"error": "unauthorized"
}

Default Response

Media typeapplication/json
object
error
required
string
Allowed values: unauthorized forbidden no_membership membership_disabled unverified_email identity_conflict insufficient_scope validation_failed not_found rate_limited internal
message
required
string
requestId
required
string
issues
Array
Example
{
"error": "unauthorized"
}

Default Response

Media typeapplication/json
object
error
required
string
Allowed values: unauthorized forbidden no_membership membership_disabled unverified_email identity_conflict insufficient_scope validation_failed not_found rate_limited internal
message
required
string
requestId
required
string
issues
Array
Example
{
"error": "unauthorized"
}