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.
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"{
"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"{
"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.limitechoes what you asked even when the server clamps lower. Page by rows received.- Timestamps: ISO 8601.