Quick start
A small path that proves the package, API key, and key-bound brand publish workflow.
Install or run once
The public package is @anakonn/ankk and the binary is ankk. The CLI currently requires Bun.
bunx @anakonn/ankk --json health
bun install -g @anakonn/ankk
ankk --json health Configure safely
Use an API key from Ankk. Command output redacts the full key, and environment variables work for CI.
ankk config setup --scope global
ANKK_API_KEY=spk_... ankk config setup --scope project --api-key-env ANKK_API_KEY --yes
ankk config show Publish prepared content
Create a JSON payload and hand it to the same public scheduling contract used by API clients.
ankk brand get --json
ankk contents publish --file payload.json
ankk contents publish --file payload.json --scheduled-for 2026-07-01T09:00:00Z Send JSON instead of rebuilding forms
Payload
Use —file for content bodies so scripts and AI tools can produce structured payloads without a fragile pile of flags.
{
"connection_id": "<connection_id>",
"idempotency_key": "launch-thread-2026-07-01",
"sns_type": "threads",
"text": "Launch update from Ankk",
"scheduled_for": "2026-07-01T09:00:00Z"
} - Keep payload fixtures outside git when they contain customer data.
- Use idempotency keys for repeatable automation.
- Treat accepted as scheduled, not provider-succeeded.
Call the public API directly
API
Every CLI workflow maps back to the public /v1 API. Use Bearer auth; the API key selects the brand for /v1/brand routes.
curl -X POST https://api-public.ankk.app/v1/brand/contents
-H "Authorization: Bearer spk_..."
-H "Content-Type: application/json"
--data @payload.json - Use GET /v1/brand to inspect the brand bound to the API key.
- Use /v1/docs and /v1/openapi.json for the public contract.
- Never paste full API keys into logs or tickets.
Track the work after acceptance
Status
Publishing is asynchronous. The API accepts validated work, persists it, and schedules execution; provider completion happens later.
ankk contents list --json
ankk contents get --content-id <content_id> --json - Expected states include accepted, queued, publishing, published, failed, and retry.
- Use signed webhooks when another system needs status updates.
- Operational status stays in Ankk instead of the AI prompt.
Prompt AI tools to use Ankk, not replace it
Let the AI tool prepare copy, payloads, or commands. Ankk remains the scheduling and status system.
Codex
Create a Threads launch payload from this release note, save it as tmp/launch-thread.json, then run ankk contents publish with my configured brand.
Claude Code
Inspect payload.json for missing connection_id, idempotency_key, sns_type, text, and scheduled_for. Then show the exact ankk contents publish command.
ChatGPT
Draft three channel-safe post variants and return one JSON payload that I can pass to ankk contents publish —file payload.json.
Safety boundaries
- Do not expose full spk_ API keys to models, logs, screenshots, or issue comments.
- Do not tell users that command success means provider publishing already succeeded.
- Do not document hidden or dormant CLI commands as public features.
- Use API keys, webhooks, and status checks for automation instead of direct database access.