Documentation
ARK puts the ARK engine on your existing cameras and footage and returns grounded security intelligence. Capabilities are granted per organization (nothing is on by default, see below). You keep your video; we annotate by reference and return JSON, never storing or re-serving your media. Prepaid credits, billed per minute of footage analyzed.
How access works
Nothing is unlocked when you sign up. You start with your plan and an empty, locked set of capabilities. We enable the specific features your deployment needs, per organization, once you are set up. Access is deliberate, not default, so a feature is never available until it has been granted to you.
This keeps the platform safe and regulated: it is easier to grant a capability than to claw one back. Biometric features (Facial Recognition and Facial Redaction) carry an extra gate. They cannot be turned on until your organization accepts a biometric-data addendum, and the face references you enroll are encrypted at rest, tagged to your region, and deleted on request.
Need a feature enabled? Ask your ARK contact, or request it from the developer console.
What ARK does
Every ARK capability is part of the ARK engine. Each is sold and granted on its own:
When ARK Alerts is enabled, you choose which alert types you receive. The full set: Weapon, Assault, Fight, Abuse, Robbery, Theft, Shoplifting, Vandalism, Suspicious behaviour, Loitering, Trespass, Forced entry, Intrusion, Medical emergency, Fall, Slip / trip risk, Fire, Arson, Vehicle risk, Abandoned object, Accident, Crowd panic. A few critical types (weapon, assault, robbery, medical, fire, forced entry, abandoned object) always fire when alerts are on.
Quickstart
Get a key in the developer console, buy credits, then call annotate:
curl https://api.honoursystem.ca/v1/analyses \
-H "Authorization: Bearer ark_live_..." \
-H "Content-Type: application/json" \
-d '{
"source": "https://your-storage/clip.mp4",
"function": "annotate_full",
"mode": "offline"
}'The response is a structured annotation: an overall summary, time-ranged scenes, per-person dossiers, and timestamped events, each with a confidence, plus a disclaimer field (see AI accuracy).
Authentication
Every request carries a bearer key: Authorization: Bearer ark_live_... (use ark_test_ keys against test data). Keys are minted in the console, scoped to your organization and a region, and shown once at creation. They're hash-stored server-side; rotate or revoke anytime.
Regions
Each key is bound to a region that decides where your jobs run and how they're priced, both quoted in CAD:
- ARK American (us-east-1): standard rate.
- ARK Canadian (ca-central-1): Canadian data residency, priced higher.
Credits are region-tagged: American credits can't pay for Canadian jobs and vice versa.
Credits & billing
One prepaid currency: credits. One credit ≈ one minute of offline full annotation. A call draws footage_minutes × function_multiplier × mode_multiplier; forensic search draws a flat per-query credit. You see a predictable number, never raw GPU time.
annotate_full × 1.0 offline × 1.0
annotate_summary × 0.5 real-time × 1.75
track × 0.4
redact × 0.6
search = 5 credits / query (flat)Buy credit packs in the console. At zero balance, jobs are refused with 402 insufficient_credits before any work runs.
Annotate
POST /v1/analyses with function: "annotate_full" | "annotate_summary". Full returns the complete document; summary is a lean recap (threat type + recommended action). Per-person fields include role, danger-to-self, threat-to-others, injury level, primary need, and a bounding box, each probabilistic.
Forensic search
POST /v1/search: natural-language search over indexed footage ("every person in a striped shirt"), returning ranked instances. Flat per-query credit.
curl https://api.honoursystem.ca/v1/search \
-H "Authorization: Bearer ark_live_..." \
-d '{ "query": "person in a red jacket near the entrance" }'Track
function: "track" re-identifies a person across a clip (cross-frame tracking). Lower multiplier than full annotation.
Redact
function: "redact" runs privacy redaction: blur or pixelate faces, with a keep-box to preserve a subject of interest while redacting bystanders. Returned by reference; we do not retain it.
Account
GET /v1/account → your region balance, plan, and usage this month.
Errors
Errors follow RFC 9457 (problem+json) with a stable code:
{
"type": "https://api.honoursystem.ca/errors/insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"code": "insufficient_credits",
"detail": "This job needs 12 credits; your ark_canadian balance is 4."
}Common codes: 401 unauthorized, 402 insufficient_credits, 422 invalid_request, 429 rate_limited.
Rate limits
Requests are rate-limited per key; responses carry X-RateLimit-Remaining and Retry-After on 429. Need more throughput? Contact us.
AI accuracy
Every ARK result is a probabilistic prediction, not a statement of fact. Each finding carries a confidence score, and any score below 100% means ARK can be wrong. Expect both false positives (a flag for something that did not happen) and false negatives (a real event ARK did not catch).
An ARK result must never be the sole basis for a decision affecting a person's safety, liberty, employment, or legal standing. A qualified person must review every result before you act on it.
ARK reports observable events and anomalies to support that review. It does not determine intent or guilt, and it does not identify anyone by name.