PATCH /v1/icps/{id}
| Call | PATCH /v1/icps/{id} |
| Price | free |
| Scope | decisions:write |
| Operation id | updateIcp |
What it does
Section titled “What it does”Change a profile’s name, description or filters. Changing the description re-runs summarization. Past decisions are unchanged. Free. Scope: decisions:write.
Example request
Section titled “Example request”Copy it as curl. Set VERDICT_API_KEY first; uuidgen makes a fresh Idempotency-Key.
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"}'Example response
Section titled “Example response”200: The updated profile.
{ "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"}Parameters
Section titled “Parameters”| 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. |
Request body
Section titled “Request body”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. |
Response fields (200)
Section titled “Response fields (200)”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
Section titled “Errors”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. |
Try it
Section titled “Try it”Open the interactive reference to send this request from the browser. The full document is at /openapi.json.