Start here

Quickstart

Ten minutes from an empty workspace to a conversation created by your code, a reply sent through it, and a webhook telling you about the next customer message.

Last updated

  1. Create a workspace

    Sign up on Kommio Cloud (free, no sales call). The hosted app lives at app.kommio.io and the API under https://app.kommio.io/api; every credential you create is bound to your workspace, so there is nothing to put in the URL. The snippets below use KOMMIO_URL for it.

  2. Add an inbox

    Settings, Inboxes: an email inbox (a Microsoft 365 or Google sign-in, or IMAP and SMTP credentials validated before saving) or a website-chat inbox; the other channels (WhatsApp, Messenger, Instagram, Telegram, SMS, Slack) start from Settings › Marketplace. Note its id; you will start conversations in it. You can also create one through the API with POST /api/inboxes.

  3. Create an API key

    Settings, API keys. Tick the permissions the integration needs, for this quickstart conversations:read, conversations:reply, contacts:read, contacts:write and webhooks:manage. The key starts with kmk_ and is shown once.

    shell
    export KOMMIO_URL=https://app.kommio.io/api
    export KOMMIO_KEY=<api key>
  4. Start a conversation from your code

    One call creates the contact if the email is new, opens the conversation in the inbox and sends the first message through the channel.

    curl -X POST "$KOMMIO_URL/conversations" \
      -H "Authorization: Bearer $KOMMIO_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: order-4242-welcome" \
      -d '{
        "inbox_id": 3,
        "email": "[email protected]",
        "subject": "Your order 4242",
        "content": "Hi Ana, your order has shipped. Reply here with any question."
      }'
    Response 201 Created
    {
      "id": 4821, "display_id": 231, "inbox_id": 3, "contact_id": 77, "contact_name": "[email protected]",
      "status": "open", "status_category": "open", "priority": "none", "subject": "Your order 4242",
      "created_at": "2026-09-22T09:12:00Z", "last_message_preview": "Hi Ana, your order has shipped."
    }
  5. Reply and read the thread

    curl -X POST "$KOMMIO_URL/conversations/4821/messages" \
      -H "Authorization: Bearer $KOMMIO_KEY" -H "Content-Type: application/json" \
      -d '{"content": "Tracking: 1Z999. Delivery Thursday.", "kind": "reply"}'
    
    curl "$KOMMIO_URL/conversations/4821/messages" -H "Authorization: Bearer $KOMMIO_KEY"
  6. Hear back when the customer answers

    Register a webhook for message.created. Every delivery is signed; the webhooks guide has receivers in Node, Python and Go.

    curl
    curl -X POST "$KOMMIO_URL/webhooks" \
      -H "Authorization: Bearer $KOMMIO_KEY" -H "Content-Type: application/json" \
      -d '{"name": "orders", "url": "https://orders.example/hooks/kommio", "events": ["message.created", "conversation.updated"]}'
    Response 201 Created
    { "id": 9, "name": "orders", "url": "https://orders.example/hooks/kommio", "events": ["message.created", "conversation.updated"], "status": "active", "secret": "whsec_8kP2mQ7vR4tX1yB6nC9zL3hJ0dF5gA" }

    The secret is in this response only.

Every claim on these pages is covered by a test in the repository, and the API reference is generated from the same contract every server serves at /api/openapi. Corrections to [email protected].