Menu

API reference · v0.1.0

API reference

Find the endpoint for your integration, check its fields and permissions, and use the request examples to get started. Explore 161 endpoints across 24 areas and 14 webhook events.

Not a developer? The guides cover everything you can do from the dashboard.

Get started

  1. 1Create an API keyUnder Developer → API keys, with only the scopes your code needs.
  2. 2Make your first requestAdd a contact, track an event and send an email.
  3. 3Handle API responses and errorsErrors, rate limits, idempotency and pagination.

Base URL

Every request goes to https://api.kirora.io under the /v1 prefix.

Common tasks

ToCall
Create or update a person from your appPOST /v1/contacts/identify
Record what someone did, so journeys can reactPOST /v1/events/track
Send a receipt, password reset or alertPOST /v1/transactional/messages
Send a push notification to one personPOST /v1/push/messages
Register a device for pushPOST /v1/contacts/{id}/installations
Send a campaign built in the dashboardPOST /v1/campaigns/{id}/send
Send a campaign to people you name, each with their own dataPOST /v1/campaigns/{id}/trigger
Hear when a message is delivered, opened or bouncesPOST /v1/webhooks
Export what was sent, as CSVPOST /v1/messages/exports
Erase a person and their historyPOST /v1/contacts/erase

Authentication

Send a scoped API key as a bearer token. Each endpoint page names the scope it needs; a key without it gets a403. Keys come in two kinds: integration keys, and agent keys for AI tools, which can read and draft but never send. See authentication.

curl https://api.kirora.io/v1/me \
  -H "Authorization: Bearer $KIRORA_API_KEY"

Responses

Requests and responses are JSON. Successful responses carry the payload under data, with metawhere there is more to say, such as the next page’s cursor. Errors replace data with error, whosecode is stable and safe to branch on. Lists are cursor-paginated (see pagination), and sends and tracked events take an Idempotency-Key (see idempotency).

Status codes

2xx means it worked; each endpoint page says which one it returns. Every endpoint can also return the errors below, so they are listed here once rather than on every page.

StatusMeaning
400The request was malformed or failed validation. error.code says which.
401The API key is missing, malformed, revoked, or expired.
403The key is valid but lacks the required scope, or is an agent key attempting an operation agent keys may not perform.
404No such resource in this organization. A resource owned by another organization also returns 404, never 403.
409The request conflicts with current state — a duplicate unique value, or a resource whose status does not allow this operation.
429Rate limit exceeded. The Retry-After header says how long to wait.
500An unexpected server error. Retrying an idempotent request is safe.
503A dependency is temporarily unavailable. Retry with backoff.
All 44 error codes
  • BAD_REQUEST
  • ALREADY_EXISTS
  • CONFLICT
  • IN_USE
  • FORBIDDEN
  • INTERNAL_ERROR
  • NOT_FOUND
  • RATE_LIMITED
  • REVISION_CONFLICT
  • SERVICE_UNAVAILABLE
  • UNAUTHORIZED
  • VALIDATION_ERROR
  • API_KEY_IP_NOT_ALLOWED
  • AGENT_CONFIRMATION_REQUIRED
  • EMBED_ORIGIN_NOT_ALLOWED
  • WORKSPACE_SUSPENDED
  • WORKSPACE_DELETION_PENDING
  • CONTACT_SEND_IN_PROGRESS
  • EXPORT_UNAVAILABLE
  • NOTHING_TO_EXPORT
  • EVENT_NAME_LIMIT_REACHED
  • PLAN_LIMIT_REACHED
  • PLAN_FEATURE_UNAVAILABLE
  • CAMPAIGN_AUDIENCE_CONFLICT
  • EMPTY_AUDIENCE
  • INVALID_CAMPAIGN_CONTENT
  • DRAFT_INCOMPLETE
  • INVALID_SCHEDULE
  • UNSUPPORTED_CHANNEL
  • POSTAL_ADDRESS_MISSING
  • CONSENT_MISSING
  • SUPPRESSED
  • SIGNUP_BLOCKED
  • INVALID_SENDER_ADDRESS
  • SENDING_DOMAIN_DMARC_MISSING
  • SENDING_DOMAIN_IDENTITY_CONFLICT
  • SENDING_DOMAIN_UNVERIFIED
  • IDEMPOTENCY_KEY_REUSED
  • CONTENT_NOT_RETAINED
  • RECIPIENT_EMAIL_MISSING
  • TEMPLATE_NOT_PUBLISHED
  • TEMPLATE_ENVELOPE_INCOMPLETE
  • PUSH_APP_NOT_READY
  • PUSH_DESTINATION_MISSING

What each means, and which are worth retrying: errors.

Server libraries

Every endpoint page shows its request in cURL, Node.js, Python and Go. Typed server libraries, the React builders and the CLI are listed under SDKs, with their release status. Until a library for your language is published, call the API directly.

Endpoints

  • Events7 endpoints

    Behavioural event ingestion. Events drive journey triggers and segment rules.

  • Contacts11 endpoints

    People you can message, their attributes and their consent. identify is the upsert to use for ingestion; it resolves on identity rather than id.

  • Push installations3 endpoints

    Device and browser subscriptions that make a contact reachable by push.

  • Attributes3 endpoints

    The attribute keys your contacts carry and their values, for rule and merge-tag pickers.

  • Groups9 endpoints

    Static audiences with explicit membership.

  • Segments9 endpoints

    Rule-based audiences, evaluated when used rather than stored as a fixed list.

  • Templates13 endpoints

    Reusable block trees and themes. Campaigns snapshot a template rather than referencing it, so editing one never changes a campaign already built from it.

  • Shared blocks6 endpoints

    Blocks kept once and placed in many emails, such as a footer or a product card; editing one updates every template that uses it.

  • Assets2 endpoints

    Images uploaded for template image blocks, served from a public URL.

  • Forms9 endpoints

    Hosted signup forms that create contacts and record consent.

  • Campaigns20 endpoints

    One-off sends to a group or segment.

  • Journeys13 endpoints

    Multi-step automations that contacts enter and move through over time.

  • Compat3 endpoints

    Customer.io's and Braze's tracking calls, for moving here: point the client you run at these routes and send to both until you switch.

  • Transactional6 endpoints

    One-off messages to a single recipient — receipts, password resets — outside campaigns, with idempotency keys for safe retries.

  • Push2 endpoints

    Direct push sends to a contact's installations.

  • Push projects1 endpoint

    The products whose apps receive push, and whether each can send.

  • Sending domains6 endpoints

    Domains you send from, and their DNS verification state. Nothing sends email until a domain here is verified.

  • Partners9 endpoints

    For platforms that resell messaging to their own customers: one workspace per tenant, driven with a partner key and the Kirora-Workspace header, and short-lived sessions for the embedded builders.

  • Webhooks9 endpoints

    Endpoints that receive our events, signed and retried: subscribe, list, pause, test, rotate secrets and resend deliveries.

  • Messages5 endpoints

    The send log: every message from any source, and what became of it.

  • Suppressions3 endpoints

    Addresses nothing is sent to: bounces, complaints, unsubscribes and blocks you add.

  • Topics6 endpoints

    Subscription topics a contact can opt in or out of, and each contact's choices.

  • Me2 endpoints

    The calling API key and its workspace, as a connection test.

  • Reports4 endpoints

    How sending is performing: the overview and a per-campaign comparison, by calendar day in the workspace's timezone.

  • Webhook events14 events

    What Kirora sends to your endpoints, signed and retried.