Public API Reference
Base URL: https://ai.numintek.com/api
All public endpoints are prefixed with /v1/public/. Internal endpoints (/v1/admin/*, /v1/internal/*) are not exposed to tenants.
Authentication
Every request must include an API key created at Settings → API Keys:
curl https://ai.numintek.com/api/v1/public/conversations \
-H "Authorization: Bearer dnm_live_XXXXXXXXXXXX"Key format:
dnm_live_...— production keydnm_test_...— test key (no billing, isolated data)
Idempotency
Every mutation (POST, PUT, PATCH, DELETE) accepts an Idempotency-Key
header. Same key within 24h returns the cached response:
curl -X POST https://ai.numintek.com/api/v1/public/conversations \
-H "Authorization: Bearer dnm_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channelId": "...", "message": "..."}'Pagination
Cursor-based. Response includes nextCursor when more pages exist:
{
"data": [...],
"nextCursor": "cnv_abc123"
}Pass it as ?cursor=cnv_abc123 for the next page.
Errors
RFC 7807 problem+json:
{
"type": "https://ai.numintek.com/errors/validation",
"title": "Validation failed",
"status": 422,
"detail": "Field 'channelId' is required",
"instance": "/v1/public/conversations"
}Common statuses:
401— missing or invalid API key403— key exists but lacks the required scope (see scopes)409— conflict (usually an existing resource with the same key)422— request body validation failed429— rate limit (per-key, default 60 rpm; upgrade in Settings)
Scopes
Each key carries a scope list. Least-privilege recommended:
read:conversations— GET /conversations and /messageswrite:conversations— POST /conversations and /messagesread:customers— GET /customerswrite:customers— POST /customers and PATCH /customers/idread:agents— GET /agentswrite:agents— POST and PATCH /agents (draft only)read:knowledge— GET /knowledge-baseswrite:knowledge— POST /knowledge-bases and upload documentsread:webhooks— GET /webhookswrite:webhooks— POST, PATCH, DELETE /webhooksread:usage— GET /usage
OpenAPI
Full Swagger schema at ai.numintek.com/api-docs.
SDKs
- Node/TypeScript:
@danum-ai/sdk-node - Others: coming soon; the API is REST + JSON so any HTTP client works.