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.crm.client_overview_getReads where ONE client named by name stands: their open invoices with balance and since when they are owed, the total owed, and which channels you have talked on with the day of their last message.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.kiipu.client_balance_getReads how much ONE client named by name owes in total, as the ledger has it, and their next installment due.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.miira.catalog_searchSearches the published catalog by words and returns up to 5 active public offerings with name, summary, price, currency and what the price is per; with exactly one match, also its whole description and attributes.miira.knowledge_searchSearches the knowledge base the team loaded for the sales agent (manuals, cases, answers to objections) by words, and returns up to 6 fragments with their document and section.miira.agent_config_getReads how the sales agent is configured today: its persona, the script in order with what each question saves and scores, the funnel stages, the reference responses, the documents asked per client type and the milestones.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.4.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.4.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-22niiko-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 →- Five more reads: the catalog, the knowledge base, a client's balance and overview, the agent's setup
POST /api/v1/reads/{id}answers five more declared reads: search the published catalog, search the knowledge base, how much one client owes, where one client stands (open invoices and the channels you talked on, never what was said) and how the sales agent is configured. - 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.