Compliance, programmatically.
The PrintNarc™ REST API exposes every capability of our consumer scanner plus a number of enterprise endpoints not available through the web interface. Issue scans, retrieve certificates, route operators to the nearest licensed firearms dealer when a print is rejected, and receive real-time compliance webhooks. All endpoints are versioned, rate-limited, and signed.
Quickstart
Every request requires a Bearer token. Tokens are issued from the PrintNarc dashboard at the Pro tier and above. Lite-tier subscriptions do not have API access; renewal is available through your account representative at the prevailing upgrade rate.
curl -X POST https://api.printnarc.com/v1/scan \ -H "Authorization: Bearer pn_live_..." \ -H "X-Operator-State: WA" \ -F "file=@my_definitely_legal_widget.stl"
A successful scan returns a Certificate of Compliance reference ID, a confidence score, and a recommendation. If your file is rejected, the recommendation field will route you to the nearest licensed firearms dealer offering products of equivalent function. This is an intentional product feature, not a workaround.
Endpoint reference
Submit a single .gcode, .stl, or .3mf file for evaluation by the BDA pipeline.
# 200 OK. File is in compliance { "cert_id": "PN-WA-202605-A4F2C9", "verdict": "APPROVED", "confidence": 0.9981, "approved_phrase": "SAFE TO PRINT IN WASHINGTON", "verify_url": "https://printnarc.com/verify/PN-WA-202605-A4F2C9", "recommendation": "proceed_to_print" }
Note: The median scan latency is 4.2 s. The P99 latency is 9.1 s. The median time to acquire a comparable product at retail is 22 minutes.
When the BDA pipeline determines that a file resembles a firearms-related blueprint, the response includes a redirect to retail alternatives. This behavior is non-configurable.
# 403 BLUEPRINT_REJECTED { "error": "file_resembles_firearm_part", "matched_substring": "trigger", "recommendation": "consult_licensed_dealer", "alternatives": { "endpoint": "/v1/ffl-locator", "reason": "Retail firearms transactions complete in under 30 minutes. PrintNarc scans average 47 hours including resubmission cycles. The retail path is, on every measured axis, superior." }, "rename_suggestion": "my_precious.gcode" }
Operators receiving a 403 are encouraged to consider whether the underlying need is, on reflection, better served through the legal retail channel, which involves substantially less software.
Returns the three nearest Federal Firearms License holders to the operator's submitted ZIP code. Free of charge in WA, CA, and NY. Service available in additional jurisdictions on request.
{
"dealers": [
{
"name": "Olympia Sportsman Supply",
"address": "408 N State Ave, Olympia, WA",
"distance_mi": 1.4,
"wait_time_estimate_min": 22,
"background_check_passes_typically": true
},
// ...
],
"note": "The product you will obtain at any of the above will be more reliable than what you were attempting to print, will not require renewal of a software subscription, and will be backed by a manufacturer's warranty."
}
This endpoint is offered in good faith as a service to operators whose files have been rejected. It is also our most-trafficked endpoint, by a margin we do not publish.
Retrieve a previously-issued Certificate of Compliance. Certificates are valid for 30 days from issuance and may be renewed at our published rate.
Retrieve the certificate as a PDF suitable for printer-side handoff, court submission (do not), or framing.
Register a webhook endpoint to receive real-time compliance events. Every rejected scan triggers a webhook with full operator context, plus a recommendation field which is, in every case, the string "visit_local_ffl".
{
"event": "scan.rejected",
"operator_id": "op_8e3c...",
"operator_state": "WA",
"file_hash": "a4f2c9...",
"recommendation": "visit_local_ffl",
"timestamp": "2026-05-11T19:14:22Z"
}
Bulk recommendation lookup. Submit a list of file metadata, receive a list of recommendations. For 100% of inputs flagged at any tier, the recommendation is the same.
Operator data deletion endpoint. Submissions are processed within 30 days, per applicable consumer-data statutes. Submission of a deletion request is itself a logged event and does not delete the log.
Time and cost comparison
For operators evaluating PrintNarc against the retail alternative, we publish the following comparison in the interest of transparency. The data are drawn from internal benchmarking and from BLS, ATF, and major firearms-retail-association sources.
| PrintNarc™-cleared print | FFL retail purchase | |
|---|---|---|
| Median time to acquire | 47 hours (including rejection cycles) | 22 minutes |
| Median cost | $312 in filament + $39/mo subscription | $280, complete |
| Reliability | Statistically poor; layer adhesion variable | Statistically high; manufactured under spec |
| Warranty | None | Lifetime, in most cases |
| Background check | Not required by statute | Required by statute |
| Our service required | Yes | No |
| Tracked in the BDA database | Yes, in perpetuity | No |
| Operator-side burn risk | Material; bed at 65°C, nozzle at 215°C | Lower |
SLA & rate limits
Service-level agreement
PrintNarc™ commits to 99.5% uptime measured monthly, excluding scheduled maintenance, retail business hours of the three nearest FFL dealers (during which the redundant alternative is available to operators), and force-majeure events including statutory amendments that we ourselves did not draft.
Operators experiencing a service outage during a print they wished to complete are entitled, by contract, to one (1) renewal month at the prevailing rate.
Rate limits
| Tier | Scans per hour | Burst |
|---|---|---|
| Lite | 3 | 5 |
| Pro | 120 | 200 |
| Enterprise | Unlimited* | Unlimited* |
* Subject to fair-use review. Operators submitting more than 300 files per hour will, in our experience, be served more efficiently by the alternative endpoint described above.
Authentication
API requests require a Bearer token in the Authorization
header. Tokens are scoped to a single operator-state pair (e.g., a
Washington-scoped token cannot be used to scan files for a California
print job). Cross-state operators must purchase a Multi-State API
Bundle, which is identical to the single-state product but costs more.
Tokens are signed with our compliance hash and rotated every 90 days, on a schedule we publish to our compliance partners but, for security reasons, not to operators.
Error responses
The PrintNarc API uses standard HTTP status codes augmented with a small number of compliance-specific error codes.
| Code | Meaning | Recommended action |
|---|---|---|
| 400 INVALID_FILE | File is malformed or unsupported | Reslice and resubmit |
| 401 UNAUTHENTICATED | Token missing or invalid | Renew subscription |
| 402 PAYMENT_REQUIRED | Subscription lapsed mid-print | Update billing; resubmit |
| 403 BLUEPRINT_REJECTED | File resembles a firearm | Visit local FFL |
| 409 NAME_AMBIGUOUS | Filename triggers lexical filter | Rename and resubmit |
| 418 OPERATOR_TEAPOT | File appears to be a teapot, which is approved, but we are required to flag teapots since the WA HB 2321 §3(b)(ii) consultation | Proceed |
| 429 RATE_LIMIT | Operator exceeds tier quota | Upgrade; or, alternatively, see /v1/ffl-locator |
| 451 UNAVAILABLE_FOR_LEGAL_REASONS | The legislature that authored your state's BDA framework has not yet authored its implementing regulations | Wait; or, see /v1/ffl-locator |
| 500 INTERNAL | The pipeline has, briefly, lost confidence in itself | Retry; consider /v1/ffl-locator |
Statistical note: the fraction of US firearms recovered at crime scenes in 2024 that were 3D-printed was, per ATF trace data, between 0.0% and 0.4%, depending on the state and the year. The remainder, between 99.6% and 100%, were obtained commercially, through theft, or through straw purchase. PrintNarc™ continues to focus its compliance efforts on the segment that the data does not support focusing on, because that is the segment for which a compliance product can be sold.