Authentication

Get your API key and make your first call. All requests use Bearer token authentication and return JSON.

Get your key

Hosted: the key is issued with your tenant and handed over at onboarding. Lost it, or want it rotated: ask Floqer; there is no self-serve key page.

Self-hosted: you choose it. Set ACKDB_API_KEY on the server and restart. If it is unset, auth is off entirely; that is for local development only.

One key per deployment, not per user. There are no user accounts, roles, or scopes on the API; anyone holding the key can do everything. Treat it like a database password: server-side only, never in a browser or a repo. Attribution is separate from auth: write calls that record who acted take an actor email in the request body.

bash
export ACKDB_URL="https://<your-tenant>.api.ackdb.ai"
export ACKDB_API_KEY="<your key>"

The full OpenAPI spec is at docs.ackdb.ai, or /openapi.json on your own host.

First call

The liveness probe. No credential needed, on any deployment.

curl -s "$ACKDB_URL/health" \
  -H "Authorization: Bearer $ACKDB_API_KEY"
Response · 200
{
  "status": "ok"
}

The source packs this deployment accepts — the first call that proves your credential works.

curl -s "$ACKDB_URL/schemas/sources" \
  -H "Authorization: Bearer $ACKDB_API_KEY"
Response · 200
{
  "data": [
    {
      "sourceType": "job",
      "contentSchema": {
        "event_type": "string",
        "full_name": "string",
        "linkedin_url": "string",
        "company": "string",
        "title": "string?",
        "title_category": "string?",
        "decision_maker_status": "boolean?",
        "change_type": "string?",
        "changed_at": "datetime?",
        "ended_at": "datetime?"
      },
      "identityLinkTypes": [
        "domain"
      ],
      "defaultTraits": [],
      "validEventTypes": [
        "job_change"
      ],
      "eventTypeField": "event_type",
      "eventTypePrefix": "job_",
      "eventMetadataFields": [
        "full_name",
        "linkedin_url",
        "title",
        "company",
        "decision_maker_status",
        "title_category",
        "change_type",
        "changed_at",
        "ended_at"
      ],
      "createdAt": "2026-07-01T00:00:00.000Z"
    }
  ]
}

Continue with Push events to send data to ackDB.

Conventions

  • Success: { "data": ... }; lists add "pagination": { total, limit, offset }.
  • Errors: { "error": { "code", "message" } }. Every code and limit: Errors and limits.
  • pagination.limit echoes what you asked even when the server clamps lower. Page by rows received.
  • Timestamps: ISO 8601.