ARK API

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:

Intelligence
ARK Threat Analysis
The ARK engine: real-time threat scoring, escalation risk, and the predicted next event.
ARK Narration
A plain-language description and reasoning for every alert, so an operator sees why.
ARK Alerts
The live alert lifecycle; which alert types you receive is set per-account.
ARK Zone Monitoringsoon
Draw zones and get dwell-time, intrusion, and line-crossing alerts.
Investigate
ARK Forensic Search
Natural-language search across recorded footage to find a moment, person, or behaviour.
ARK Tracking
Follow one person across cameras and time (re-identification).
ARK License-Plate Recognitionsoon
Automatic licence-plate reading and watchlisting (ALPR).
Biometric (consent-gated)
ARK Facial Recognitionconsent
Match faces against your own positive (watchlist) and negative (ignore) lists.
ARK Facial Redactionconsent
Blur, black-bar, or mosaic faces; redact a target or everyone but a target; protect minors.
Developer
ARK Developer API
REST API access with keys and prepaid credits.

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.

Full AI-accuracy notice →Acceptable use policy →