Public API · v1 plan dcf053ee9096
Verbs and declared reads. Never tables.
No raw tables and no free-form filters. This API exercises an action declared public, or answers a read declared public, with the authorization its owner switched on — and tells you precisely what happened.
A key acts, a person readsA key with its scope exercises actions. Reads need OAuth, on behalf of a person and with their role.Three outcomesDone, refused with a named reason, or waiting for a signature.Retrying is safeWith an Idempotency-Key nothing runs twice.Same actions everywhereSDKs, CLI, n8n and the MCP server are generated from one plan.
The actions today
See all →CRM
crm.call_loggedLogs what was discussed in a call on a client's record, naming the client; optionally creates the follow-up with its date.crm.owner_assignedChanges who owns a client, naming the client and the team member (by name or email).crm.stage_movedMoves a client's open deal to another pipeline stage, naming the client and the stage.crm.task_createdCreates a reminder (a task with date and time) on a client named by name.crm.deal_createdOpens a new deal in the pipeline for a client named by name, with a title, an optional value in USD, an optional stage (by name; without it, the first one) and an optional owner.crm.note_addedSaves a note on a client's record, naming the client: something to know next time, with no call and no date.crm.contact_addedAdds a person (name, and optionally email, phone and role) to a client's record, naming the client.
Kiipu · invoicing
kiipu.invoice_proposedPrepares an invoice as a DRAFT for a client named by name, with its lines and taxes.kiipu.draft_voidedVoids a DRAFT invoice (one created with kiipu.invoice_proposed and not yet issued), by its id or by the client's name when it is their only draft.kiipu.payment_reportedLeaves in the Kiipu approval queue the notice that a client (by name) paid a given amount of an open invoice.
Miira · leads & WhatsApp
miira.lead_createCreates a new lead in the workspace CRM from its contact details.miira.broadcast_quotedQuotes sending the SAME WhatsApp message to several clients named by name (up to 50).miira.broadcast_sentSends the WhatsApp broadcast quoted by miira.broadcast_quoted, exactly to whom and how the quote said.
The reads today
See all →crm.clients_searchCounts and finds the workspace's CRM clients, optionally by part of the name, status, tag or creation date.crm.month_summary_getReads how the month is going, piece by piece and with the same figures each read would give: new clients, collected, proposals sent and accepted, deals won, appointments and the ledger result.kiipu.collections_getReads what is owed: the outstanding total, what is overdue by age bucket, the 15 clients who owe the most with their overdue amount and since when, and the next installments due.kiipu.collected_month_getReads how much was collected this month so far (as the ledger recorded it), the same stretch of last month to compare, and what is still outstanding.kiipu.client_invoices_listLists the latest invoices and payments of ONE client named by name: number, status, total, balance, and when and how they paid.kiipu.month_result_getReads this month's income statement from the ledger: revenue, expenses, net income, the accounts that weigh most and last month to compare.miira.conversations_waiting_getReads how many conversations a team member is handling, how many are waiting for a reply, how many have waited longer than the workspace threshold and the longest wait.miira.funnel_getReads the Miira lead funnel by stage (the same rule as the board), how many leads are qualified, how many came in this month and the 15 most recent with their stage.ciita.agenda_getReads the appointments of today, this week, next week or this month: how many per status and the first 15 with day, time in the workspace time zone, client, resource and status.
Packages
See all →TypeScript · 0.3.0@vorluno/niiko-sdkThe TypeScript client. One typed method per action and per read, a Result union with the outcomes, zero dependencies.Python · 0.1.0niikoThe Python client. Dataclasses per action and per read, and a Result with the outcomes, zero dependencies.TypeScript · 0.3.0niiko-cliThe niiko API from the terminal: actions with a key, reads with an OAuth token, JSON output and the outcome in the exit code.n8n · 0.1.2n8n-nodes-niikoEvery public action as an n8n operation, refusals as data, usable as an AI Agent tool. English and Spanish.MCP · 2026-10-18niiko-mcp-serverThe remote MCP server. Connect Claude or any OAuth-capable client and every action and read you grant becomes a tool, the reads marked read-only.
Latest changes
See all →- The SDKs and the CLI read
@vorluno/niiko-sdk,niikoandniiko-cli0.3.0 take an OAuth access token (accessToken,access_token=,niiko login --token) and have one read-only method per read:getCollections(),get_collections(),niiko read kiipu.collections_get. - Broadcasts can be declared a promotion
miira.broadcast_quotedtakes an optionalpurpose:notice(the default, unchanged) orpromotion. - Declared reads, OAuth only
POST /api/v1/reads/{id}answers nine declared reads — what is owed, what was collected, the agenda, the funnel, the month — never raw tables and never text someone wrote. - Broadcasts no longer wait for quiet hoursniiko no longer defers or excludes sends by the time of day.