ARCNM

API reference

Geometry

The Geometry API lets you list geometry.

The Geometry API lets you list geometry.

Auto-generated from the public OpenAPI spec — this page never drifts from the running API. Base URL https://api.arcnm.io. Authenticate with the X-API-Key header (see Authentication).

Part Revision Drawing Url

GET /api/v1/parts/geometry/{part_revision_id}/drawing-url

Presigned URL for the revision's active 2D drawing, plus its content_type so the overlay viewer knows whether to render it as an image or a PDF. {url, status, content_type}; status no_dataset when no drawing is attached.

Parameters

Name In Type Required Description
part_revision_id path string yes Identifier of the part revision.

Request

curl -X GET https://api.arcnm.io/api/v1/parts/geometry/{part_revision_id}/drawing-url \
  -H "X-API-Key: $ARCNM_API_KEY"
import requests

resp = requests.get(
    "https://api.arcnm.io/api/v1/parts/geometry/{part_revision_id}/drawing-url",
    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/geometry/{part_revision_id}/drawing-url", {
  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
content_type string
status string
url string

Example response

{
  "content_type": "string",
  "status": "string",
  "url": "string"
}

Part Revision Faces Url

GET /api/v1/parts/geometry/{part_revision_id}/faces-url

Presigned URL for the revision's per-face GLB (lazy-generated + cached).

Status values mirror the preview contract: ok (url present), no_dataset (no active CAD), unsupported (non-STEP CAD or OCP runtime missing), failed (tessellation error).

Parameters

Name In Type Required Description
part_revision_id path string yes Identifier of the part revision.

Request

curl -X GET https://api.arcnm.io/api/v1/parts/geometry/{part_revision_id}/faces-url \
  -H "X-API-Key: $ARCNM_API_KEY"
import requests

resp = requests.get(
    "https://api.arcnm.io/api/v1/parts/geometry/{part_revision_id}/faces-url",
    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/geometry/{part_revision_id}/faces-url", {
  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
status string
url string

Example response

{
  "status": "string",
  "url": "string"
}