aria-partner-api

Kanary Aria Partner API

An aria is a group of canaries. These API docs are a reference for integrators connecting the Kanary platform to their applications, dashboards, and services. With the Aria API you can create, terminate, update, and analyze large groups of Kanary accounts. The first version of this API is a simple interface exposing the most fundamental services for scanning and removing personal data risks. More updates and configurations coming soon. If you have suggestions, don’t hesitate to reach out.

Production base URL: https://my.kanary.com/api/v1/

Issue an API key in the admin dashboard and send it as Authorization: Bearer <api_key> on every request. Partner API paths in this repo are relative to the base URL above unless noted.

This repository contains documentation only. Partner credentials are set up through the admin dashboard. Contact hello@kanary.com to get started with a free admin account.

Documentation

Guide Description
Admin dashboard Web UI: API access, tokens, Stripe billing, usage (seats, scans, removals)
Authentication Dashboard API keys, bearer usage, expiration, payment & activation
Product API Product catalog at /api/v1/products/
Partner API Partner metadata, seat inventory, and the on-demand credit pool
Purchases Buy subscription seats and unassigned on-demand credits
Account API Account directory: create, list, invite, and delete
Members Profile fields, products, subscriptions, and scan history
Scan credits On-demand credits assigned to a member
Scan API On-demand scans by account or member (tier=core\|advanced\|trial)
Exposure API List, retrieve, update, and manually report exposures
Site API Site catalog (read-only: list and retrieve)
Threat score Profile threat scores. Beta access only

Authentication

Sign in at the admin dashboard with an admin account to request API access, manage billing, and issue API keys. See Authentication for how to use keys on API requests.

Quick start

  1. Copy your API key from the admin dashboard (details)
  2. Load your partner: GET /api/v1/
  3. Read the product catalog: GET /api/v1/products/ (Product API)
  4. Check seat inventory: GET /api/v1/seats/; buy seats when available is 0: POST /api/v1/seats/ (Purchase seats). For on-demand scans, buy unassigned credits with POST /api/v1/credits/ (Purchase credits)
  5. Create an account: POST /api/v1/accounts/ with a product_id (see Account API)
  6. List accounts or summary: GET /api/v1/accounts/, GET /api/v1/summary/
  7. List the account’s member: GET /api/v1/accounts/{account_id}/members/; full PII: GET /api/v1/members/{member_id}/. The member is created with the account
  8. For on-demand scans: POST /api/v1/scan/ with tier (core, advanced, or trial) and account or member ids (Scan API)
  9. Pull exposures: GET /api/v1/members/{member_id}/exposures/ (Exposure API). Webhooks coming soon.

Pagination

List endpoints that can return large collections use limit and offset.

Query parameters

Param Default Max Description
limit 100 250 Maximum items to return
offset 0 — Starting index into the full result set

Response metadata

Each paginated response includes:

Field Type Description
count integer Total items across all pages (not just the current page)
next string | null Absolute URL for the next page, or null on the last page
previous string | null Absolute URL for the previous page, or null on the first page

Every paginated list puts the current page in results, plus count, next, and previous. Some routes add read-only context beside that envelope (for example member_id on member sub-lists, last_updated_at on the site catalog). Partner metadata is on GET /api/v1/.

{
  "count": 482,
  "next": "https://my.kanary.com/api/v1/accounts/?limit=100&offset=100",
  "previous": null,
  "results": []
}

Follow the next URL until it is null (do not hand-roll page numbers). Omit limit and offset to use defaults. Invalid limit or offset returns 400 Bad Request.

limitations

API scope