Integrate drawing verification into your workflow
The Drawing AI Check API lets you programmatically upload technical drawings and receive automated compliance checks against ISO, ASME, DIN, and JIS standards.
/api/v1multipart/form-dataCreate API tokens in Settings → API Tokens. Each token comes with a webhook secret for verifying webhook signatures.
dc_ + 64 hex characters
Authorization: Bearer dc_your_token_hereNote: Token management (create, list, revoke) requires a browser session and cannot be done via API token.
Three steps to check a drawing programmatically:
curl -X POST /api/v1/checks \
-H "Authorization: Bearer dc_your_token" \
-F "drawing_file=@drawing.pdf"curl /api/v1/checks/{id} \
-H "Authorization: Bearer dc_your_token"
# Response: { "id": "abc-123", "status": "COMPLETED", ... }curl /api/v1/checks/{id}/result \
-H "Authorization: Bearer dc_your_token"Three steps to extract data from drawings:
# 1. Create empty job
curl -X POST /api/v1/extractions \
-H "Authorization: Bearer dc_your_token"
# 2. Upload files one at a time
curl -X POST /api/v1/extractions/{id}/files \
-H "Authorization: Bearer dc_your_token" \
-F "file=@drawing.pdf"
curl -X POST /api/v1/extractions/{id}/files \
-H "Authorization: Bearer dc_your_token" \
-F "file=@model.step"
# 3. Start processing
curl -X POST /api/v1/extractions/{id}/start \
-H "Authorization: Bearer dc_your_token"curl -X POST /api/v1/extractions \
-H "Authorization: Bearer dc_your_token" \
-F "files=@drawing1.pdf" \
-F "files=@drawing2.pdf"curl /api/v1/extractions/{id} \
-H "Authorization: Bearer dc_your_token"
# Response: { "id": "...", "status": "COMPLETED", ... }curl /api/v1/extractions/{id}/result \
-H "Authorization: Bearer dc_your_token"Upload a drawing for checking
List checks (paginated)
Get job status
Get full report (COMPLETED only)
Get findings with filters
Download annotated PDF
Compare multiple check results to detect deviations across formats (Level 1) or between revisions (Level 2). Comparisons run on top of completed Level 0 check jobs.
POST /checksPOST /comparisons/submitPOST /comparisons/submitPOST /checks (one per format/version)POST /comparisons/submit with the job IDsGET /comparisons/{set_id}GET /comparisons/{set_id}/reportCreate a comparison and start processing
Create a comparison set without starting it
List comparison sets (paginated)
Get comparison set with members
Update comparison name or authoritative job
Delete comparison set and results
Add a check job to the comparison
Remove a check job from the comparison
Start comparison processing
Get comparison report (COMPLETED only)
Download comparison report as PDF
Upload files for data extraction
Upload a file to a PENDING extraction job
Start processing a PENDING extraction job
List extraction jobs (paginated)
Get extraction job status
Get full extraction result (COMPLETED only)
Download result as JSON file
List files in extraction job
Download original PDF file
Delete extraction job
Send drawings as email attachments to get automated checks or data extraction — no API integration required.
check@cnc24.aidata@cnc24.aiThe system parses the subject line and filenames to extract:
PN: ABC-12345)Rev A)ISO, ASME, DIN)Note: The endpoints below use browser session authentication, not API tokens. Manage whitelists from Settings or programmatically via these endpoints.
List whitelisted domains, senders, and email addresses
Add a whitelisted domain
Remove a whitelisted domain
Add a whitelisted sender
Remove a whitelisted sender
Instead of polling, provide a webhook_url when creating a check or extraction. We'll POST results to your endpoint when the job completes or fails.
check.completedcheck.failedextraction.completedextraction.failed| Name | Type | Description |
|---|---|---|
| X-DrawingCheck-Signature | string | sha256={hex} — HMAC-SHA256 of the body |
| X-DrawingCheck-Event | string | Event name (e.g. check.completed, extraction.completed) |
| X-DrawingCheck-Job-Id | string | The job ID (check or extraction) |
{
"event": "check.completed",
"job_id": "abc-123",
"status": "COMPLETED",
"filename": "drawing.pdf",
"summary": {
"total_rules": 73,
"passed": 68,
"failed": 3,
"warnings": 2,
"findings_count": 5
},
"result_url": "/api/v1/checks/abc-123/result"
}# Verify with openssl
echo -n "$BODY" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET"
# Compare with the X-DrawingCheck-Signature header value2xx to acknowledge delivery{ "detail": "Description of the error" }| Code | Meaning |
|---|---|
| 400 | Bad request — invalid parameters |
| 401 | Unauthorized — missing or invalid token |
| 402 | Payment required — insufficient credits |
| 403 | Forbidden — token lacks permission |
| 404 | Not found — job does not exist |
| 409 | Conflict — job not yet completed |
| 413 | Payload too large — file exceeds size limit |
| 415 | Unsupported media type |
| 429 | Too many requests — rate limit exceeded |
| 499 | Client disconnected during upload |
POST /checks: 10 uploads per minutePOST /extractions: 10 uploads per minute