Skip to content

PATCH /v1/icps/{id}

Call PATCH /v1/icps/{id}
Price free
Scope decisions:write
Operation id updateIcp

Change a profile’s name, description or filters. Changing the description re-runs summarization. Past decisions are unchanged. Free. Scope: decisions:write.

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

Request
curl -X PATCH 'https://api.askverdict.io/v1/icps/icp_01JC3Z4Y8R9K2M5N7P1Q3S5T7V' \
-H "Authorization: Bearer $VERDICT_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"name": "RIAs under $2B"
}'

200: The updated profile.

200 response
{
"id": "icp_01JC3Z4Y8R9K2M5N7P1Q3S5T7V",
"project_id": "prj_01JC3Z4Y8R9K2M5N7P1Q3S5T7V",
"name": "RIAs under $2B",
"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"
}
Name In Type Required Description
id path string yes The ICP profile id.
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.

Schema UpdateIcpRequest. Fields to change.

Field Type Required Description
name string no New name.
description string no New plain-text description; re-runs summarization. At most 8192 bytes of UTF-8.
filters IcpFilters no Optional structured filters that sharpen the plain-text profile.
filters.firm_types array of enum: “operating_company”, “investment_adviser”, “broker_dealer”, “investment_fund”, “nonprofit”, “public_body”, “other”, “unknown” no Firm types to target.
filters.size_bands array of enum: “micro”, “small”, “medium”, “large”, “enterprise”, “unknown” no Size bands to target.
filters.countries array of string no Headquarters countries to target.
filters.exclude_countries array of string no Headquarters countries to exclude.
filters.exclude_domains array of string no Firms to exclude by domain (for example existing customers).
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.

Schema Icp.

Field Type Required Description
id string yes The ICP profile id.
project_id string yes Project the profile belongs to.
name string yes Name.
description string yes Plain-text description.
filters IcpFilters yes Optional structured filters that sharpen the plain-text profile.
filters.firm_types array of enum: “operating_company”, “investment_adviser”, “broker_dealer”, “investment_fund”, “nonprofit”, “public_body”, “other”, “unknown” no Firm types to target.
filters.size_bands array of enum: “micro”, “small”, “medium”, “large”, “enterprise”, “unknown” no Size bands to target.
filters.countries array of string no Headquarters countries to target.
filters.exclude_countries array of string no Headquarters countries to exclude.
filters.exclude_domains array of string no Firms to exclude by domain (for example existing customers).
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.
segment object yes Calibration segment of the profile (spec 6.4).
segment.industry_group string or null yes Industry group assigned at summarization.
segment.size_band enum: “micro”, “small”, “medium”, “large”, “enterprise”, “unknown”, null yes Size band assigned at summarization.
summary_status enum: “pending”, “ready”, “failed” yes Status of the one-time summarization.
thresholds Thresholds yes Decision thresholds, one per decision.
thresholds.qualify_firm object yes Threshold for qualify_firm.
thresholds.qualify_firm.value number yes The threshold answer applies to p.
thresholds.qualify_firm.source enum: “calibrated”, “custom” yes Calibrated default or your own value.
thresholds.score_signal object yes Threshold for score_signal.
thresholds.score_signal.value number yes The threshold answer applies to p.
thresholds.score_signal.source enum: “calibrated”, “custom” yes Calibrated default or your own value.
thresholds.pick_person object yes Threshold for pick_person.
thresholds.pick_person.value number yes The threshold answer applies to p.
thresholds.pick_person.source enum: “calibrated”, “custom” yes Calibrated default or your own value.
thresholds.triage_reply object yes Threshold for triage_reply.
thresholds.triage_reply.value number yes The threshold answer applies to p.
thresholds.triage_reply.source enum: “calibrated”, “custom” yes Calibrated default or your own value.
thresholds.right_person object yes Threshold for right_person.
thresholds.right_person.value number yes The threshold answer applies to p.
thresholds.right_person.source enum: “calibrated”, “custom” yes Calibrated default or your own value.
thresholds.should_send object yes Threshold for should_send.
thresholds.should_send.value number yes The threshold answer applies to p.
thresholds.should_send.source enum: “calibrated”, “custom” yes Calibrated default or your own value.
created_at string (date-time) yes When the profile was created.
updated_at string (date-time) yes When the profile last changed.

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).
404 The resource does not exist in this organization (not_found).
409 The Idempotency-Key was reused with a different request, or the first request is still running (idempotency_conflict).
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.