API reference
Verification
The Verification API lets you create and retrieve verification.
The Verification API lets you create and retrieve verification.
Auto-generated from the public OpenAPI spec — this page never drifts from the running API. Base URL
https://api.arcnm.io. Authenticate with theX-API-Keyheader (see Authentication).
Get Verification Prompts
GET /api/v1/parts/verification/{calculation_id}
Apply the ask-policy to the calculation's persisted verification candidates and return the prompts the user should answer.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
calculation_id |
path | string | yes | Identifier of the calculation. |
confidence_threshold |
query | number | no | |
max_prompts |
query | integer | no | |
include_all |
query | boolean | no |
Request
curl -X GET https://api.arcnm.io/api/v1/parts/verification/{calculation_id} \
-H "X-API-Key: $ARCNM_API_KEY"
import requests
resp = requests.get(
"https://api.arcnm.io/api/v1/parts/verification/{calculation_id}",
headers={"X-API-Key": "YOUR_API_KEY"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.arcnm.io/api/v1/parts/verification/{calculation_id}", {
method: "GET",
headers: {
"X-API-Key": process.env.ARCNM_API_KEY!,
},
})
const data = await resp.json()
Responses
| Status | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
Errors
Standard error responses — see the Errors catalog for the full envelope, request_id, and retry-safety table.
| Status | Code | When |
|---|---|---|
401 |
invalid_api_key |
Missing, malformed, or revoked API key. |
403 |
insufficient_scope |
The key is valid but lacks a scope this endpoint requires. |
404 |
not_found |
A referenced resource doesn't exist or isn't visible to your organisation. |
429 |
rate_limited |
Per-key or per-org rate limit exceeded — back off with jitter and retry. |
Response body 200
| Field | Type | Description |
|---|---|---|
all_candidates |
object[] | |
calculation_id |
string | |
part_revision_id |
string | |
prompts |
object[] | |
summary |
object |
Example response
{
"all_candidates": [
{}
],
"calculation_id": "string",
"part_revision_id": "string",
"prompts": [
{}
],
"summary": {}
}
Submit Verification Responses
POST /api/v1/parts/verification/{calculation_id}/responses
Persist the user's verify/correct answers as end_user ground-truth labels that both feed the corpus and apply to the next calculation.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
calculation_id |
path | string | yes | Identifier of the calculation. |
Request body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
responses |
VerificationResponseItem[] | yes |
Request
curl -X POST https://api.arcnm.io/api/v1/parts/verification/{calculation_id}/responses \
-H "X-API-Key: $ARCNM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"responses": [
{
"corrected_value": null,
"detail_kind": "string",
"dfm_issue_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"drawing_bbox": [
0
],
"face_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"feature_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"field_name": "string",
"field_path": "string",
"pmi_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"predicted_confidence": 0,
"predicted_value": null,
"target_kind": "string",
"verdict": "string"
}
]
}'
import requests
resp = requests.post(
"https://api.arcnm.io/api/v1/parts/verification/{calculation_id}/responses",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"responses": [
{
"corrected_value": None,
"detail_kind": "string",
"dfm_issue_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"drawing_bbox": [
0
],
"face_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"feature_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"field_name": "string",
"field_path": "string",
"pmi_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"predicted_confidence": 0,
"predicted_value": None,
"target_kind": "string",
"verdict": "string"
}
]
},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.arcnm.io/api/v1/parts/verification/{calculation_id}/responses", {
method: "POST",
headers: {
"X-API-Key": process.env.ARCNM_API_KEY!,
"Content-Type": "application/json",
},
body: JSON.stringify({
"responses": [
{
"corrected_value": null,
"detail_kind": "string",
"dfm_issue_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"drawing_bbox": [
0
],
"face_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"feature_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"field_name": "string",
"field_path": "string",
"pmi_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"predicted_confidence": 0,
"predicted_value": null,
"target_kind": "string",
"verdict": "string"
}
]
}),
})
const data = await resp.json()
Responses
| Status | Description |
|---|---|
201 |
Successful Response |
422 |
Validation Error |
Errors
Standard error responses — see the Errors catalog for the full envelope, request_id, and retry-safety table.
| Status | Code | When |
|---|---|---|
401 |
invalid_api_key |
Missing, malformed, or revoked API key. |
403 |
insufficient_scope |
The key is valid but lacks a scope this endpoint requires. |
404 |
not_found |
A referenced resource doesn't exist or isn't visible to your organisation. |
409 |
conflict |
A conflicting change, or an Idempotency-Key reused with a different body. |
429 |
rate_limited |
Per-key or per-org rate limit exceeded — back off with jitter and retry. |
Response body 201
| Field | Type | Description |
|---|---|---|
applies_to_subsequent_calculations |
boolean | |
created |
integer | |
part_revision_id |
string |
Example response
{
"applies_to_subsequent_calculations": true,
"created": 0,
"part_revision_id": "string"
}