Override alignment claim status
Overrides one alignment claim’s effective status, or clears a previous override by sending
status: null. Use List alignment claims or
Get alignment claim to find a claim_id first.
Requires the write:alignment scope, and the workspace must be enabled for API writes.
PATCH /v1/brands/{brand_id}/alignment/claims/{claim_id}/statusAuthorization
| Header | Type | Required |
|---|---|---|
Authorization | Bearer asky_sk_… | required |
Idempotency-Key | string | required |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
brand_id | uuid | required | From List brands |
claim_id | uuid | required | From List alignment claims |
Query parameters
None.
Body
application/json
| Field | Type | Required | Description |
|---|---|---|---|
status | enum | null | required | One of aligned, misaligned, partially_aligned, unverifiable, different_brand. null clears a previous override |
Request
cURL
curl --request PATCH \
--url 'https://api.askylabs.com/v1/brands/242546de-4cee-4a7d-952e-f6aa60c63ef8/alignment/claims/9f3a1c2b-7e40-4b17-8e6a-3c05b91e7d22/status' \
--header 'Authorization: Bearer <api-key>' \
--header 'Idempotency-Key: <unique-per-attempt>' \
--header 'Content-Type: application/json' \
--data '{"status":"aligned"}'Response
200
{
"data": {
"claim_id": "9f3a1c2b-7e40-4b17-8e6a-3c05b91e7d22",
"status": "aligned"
},
"request_id": "req_7d21b0af59c34e18b6ac"
}Response fields
| Field | Type | Description |
|---|---|---|
data.claim_id | uuid | required |
data.status | enum | null | required. One of aligned, misaligned, partially_aligned, unverifiable, different_brand, or null when the override was just cleared |
request_id | string | required |
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | status is missing, or is not one of the five valid values or null |
| 401 | invalid_token | The key is missing, malformed, or does not exist |
| 401 | token_expired | The key passed its expiry date |
| 401 | token_revoked | The key was revoked |
| 403 | insufficient_scope | The key does not carry write:alignment |
| 403 | plan_required | This workspace is not enabled for API writes |
| 404 | not_found | The claim does not exist for this brand, or this key is not allowed to reach it |
| 429 | rate_limited | Over 60 requests per minute |
Notes
A human override always wins over the AI-graded status. Every read endpoint on this surface
computes the effective status as COALESCE(user_status_override, alignment_status), so this call
changes what List alignment claims and
Get alignment claim report immediately, and changes any totals
computed from claim status too.
The override is sticky. It survives future alignment runs — the next run re-grades
alignment_status, but the override still wins until you clear it. Send status: null to clear
it, rather than waiting for it to expire; nothing expires it automatically.
Single-claim only. There is no bulk version of this endpoint.
The override is not attributed to a caller through this API. The app records who made an
override, but calls through this endpoint go through an RPC that has no way to attach the API
key’s identity, so user_status_override_by comes back null for overrides set this way.
This endpoint is brand-scoped in the path, unlike
Get alignment claim, which is workspace-scoped with no
brand_id in its URL.
Idempotency-Key is required. See Idempotency.