PATCH /v1/icps/{id}/thresholds
| Call | PATCH /v1/icps/{id}/thresholds |
| Price | free |
| Scope | account:manage |
| Operation id | updateIcpThresholds |
What it does
Section titled “What it does”Trade precision for recall: set the threshold answer applies to p for one or more decisions on this profile, or null to return to the calibrated default. Changes answer on future decisions and nothing else; p is unaffected. Audited. Free. Scope: account:manage.
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/thresholds' \ -H "Authorization: Bearer $VERDICT_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "thresholds": { "right_person": 0.7, "qualify_firm": null }}'Example response
Section titled “Example response”200: The profile’s thresholds after the change.
{ "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" }}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 UpdateThresholdsRequest. Thresholds to change.
| Field | Type | Required | Description |
|---|---|---|---|
thresholds |
object | yes | Thresholds to change, by decision name. |
thresholds.qualify_firm |
number or null | no | New threshold for qualify_firm, or null to return to the calibrated default. |
thresholds.score_signal |
number or null | no | New threshold for score_signal, or null to return to the calibrated default. |
thresholds.pick_person |
number or null | no | New threshold for pick_person, or null to return to the calibrated default. |
thresholds.triage_reply |
number or null | no | New threshold for triage_reply, or null to return to the calibrated default. |
thresholds.right_person |
number or null | no | New threshold for right_person, or null to return to the calibrated default. |
thresholds.should_send |
number or null | no | New threshold for should_send, or null to return to the calibrated default. |
Response fields (200)
Section titled “Response fields (200)”Schema Thresholds.
| Field | Type | Required | Description |
|---|---|---|---|
qualify_firm |
object | yes | Threshold for qualify_firm. |
qualify_firm.value |
number | yes | The threshold answer applies to p. |
qualify_firm.source |
enum: “calibrated”, “custom” | yes | Calibrated default or your own value. |
score_signal |
object | yes | Threshold for score_signal. |
score_signal.value |
number | yes | The threshold answer applies to p. |
score_signal.source |
enum: “calibrated”, “custom” | yes | Calibrated default or your own value. |
pick_person |
object | yes | Threshold for pick_person. |
pick_person.value |
number | yes | The threshold answer applies to p. |
pick_person.source |
enum: “calibrated”, “custom” | yes | Calibrated default or your own value. |
triage_reply |
object | yes | Threshold for triage_reply. |
triage_reply.value |
number | yes | The threshold answer applies to p. |
triage_reply.source |
enum: “calibrated”, “custom” | yes | Calibrated default or your own value. |
right_person |
object | yes | Threshold for right_person. |
right_person.value |
number | yes | The threshold answer applies to p. |
right_person.source |
enum: “calibrated”, “custom” | yes | Calibrated default or your own value. |
should_send |
object | yes | Threshold for should_send. |
should_send.value |
number | yes | The threshold answer applies to p. |
should_send.source |
enum: “calibrated”, “custom” | yes | Calibrated default or your own value. |
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.