Skip to content

GET /v1/icps

Call GET /v1/icps
Price free
Scope decisions:write
Operation id listIcps

Your project’s ICP profiles, newest first, each with its segment, summary status and thresholds. Call it to find the icp_id to pass to decisions. Free. Scope: decisions:write.

Copy it as curl. Set VERDICT_API_KEY first; uuidgen makes a fresh Idempotency-Key.

Request
curl -X GET 'https://api.askverdict.io/v1/icps' \
-H "Authorization: Bearer $VERDICT_API_KEY"

200: A page of profiles.

200 response
{
"data": [
{
"id": "icp_01JC3Z4Y8R9K2M5N7P1Q3S5T7V",
"project_id": "prj_01JC3Z4Y8R9K2M5N7P1Q3S5T7V",
"name": "RIAs under $1B",
"description": "US registered investment advisers with under $1B in assets and fewer than 50 staff. We sell trade reconciliation software to their operations lead.",
"filters": {
"firm_types": [
"investment_adviser"
],
"size_bands": [
"micro",
"small"
],
"countries": [
"US"
]
},
"segment": {
"industry_group": "asset_management",
"size_band": "small"
},
"summary_status": "ready",
"thresholds": {
"qualify_firm": {
"value": 0.6,
"source": "calibrated"
},
"score_signal": {
"value": 0.55,
"source": "calibrated"
},
"pick_person": {
"value": 0.5,
"source": "calibrated"
},
"triage_reply": {
"value": 0.65,
"source": "calibrated"
},
"right_person": {
"value": 0.7,
"source": "custom"
},
"should_send": {
"value": 0.6,
"source": "calibrated"
}
},
"created_at": "2026-11-07T14:00:00Z",
"updated_at": "2026-11-07T14:20:00Z"
}
],
"next_cursor": null,
"has_more": false
}
Name In Type Required Description
cursor query string no Opaque cursor from the next_cursor of the previous page. Omit it for the first page.
limit query integer no Page size, 1 to 200. Default 50.
x-verdict-version header string no API version to use, a date. Defaults to the version current when the key was created. The current version is 2026-11-01.
Field Type Required Description
data array of Icp yes ICP profiles.
data[].id string yes The ICP profile id.
data[].project_id string yes Project the profile belongs to.
data[].name string yes Name.
data[].description string yes Plain-text description.
data[].filters IcpFilters yes Optional structured filters that sharpen the plain-text profile.
data[].filters.firm_types array of enum: “operating_company”, “investment_adviser”, “broker_dealer”, “investment_fund”, “nonprofit”, “public_body”, “other”, “unknown” no Firm types to target.
data[].filters.size_bands array of enum: “micro”, “small”, “medium”, “large”, “enterprise”, “unknown” no Size bands to target.
data[].filters.countries array of string no Headquarters countries to target.
data[].filters.exclude_countries array of string no Headquarters countries to exclude.
data[].filters.exclude_domains array of string no Firms to exclude by domain (for example existing customers).
data[].filters.event_types array of enum: “filing”, “registration”, “officer_change”, “ownership_change”, “lei_change”, “address_change”, “fund_raise”, “insider_trade”, “patent_filing”, “litigation”, “news_mention”, “repo_activity”, “hiring_aggregate” no Event types that signal buying intent for this ICP.
data[].segment object yes Calibration segment of the profile (spec 6.4).
data[].segment.industry_group string or null yes Industry group assigned at summarization.
data[].segment.size_band enum: “micro”, “small”, “medium”, “large”, “enterprise”, “unknown”, null yes Size band assigned at summarization.
data[].summary_status enum: “pending”, “ready”, “failed” yes Status of the one-time summarization.
data[].thresholds Thresholds yes Decision thresholds, one per decision.
data[].thresholds.qualify_firm object yes Threshold for qualify_firm.
data[].thresholds.score_signal object yes Threshold for score_signal.
data[].thresholds.pick_person object yes Threshold for pick_person.
data[].thresholds.triage_reply object yes Threshold for triage_reply.
data[].thresholds.right_person object yes Threshold for right_person.
data[].thresholds.should_send object yes Threshold for should_send.
data[].created_at string (date-time) yes When the profile was created.
data[].updated_at string (date-time) yes When the profile last changed.
next_cursor string or null yes Pass as cursor to fetch the next page. null when this is the last page.
has_more boolean yes Whether another page follows.

Errors are RFC 9457 problem details and are never billed. Branch on type. See Errors.

Status Meaning
400 Invalid request: malformed JSON, an unknown field, a failed constraint or a size limit (invalid_request).
401 Missing, malformed, revoked or expired API key, or a bad webhook signature (unauthorized).
403 The key lacks the scope this operation needs (forbidden_scope).
429 Rate limited (rate_limited). Wait Retry-After seconds.
500 Unexpected server error (internal). Not billed; retry with the same Idempotency-Key.

Open the interactive reference to send this request from the browser. The full document is at /openapi.json.