Kairon CRM API

The crm API from Kairon — 14 operation(s) for crm.

GitHub OpenAPI

Operations 15

GET /api/crm/summary Crm controller summary #
GET /api/crm/cards Crm controller cards #
PUT /api/crm/leads/{id}/stage Crm controller set stage #
POST /api/crm/leads/stage Crm controller set stage many #
GET /api/crm/companies Crm controller companies #
GET /api/integrations/crm Crm sync controller get #
DELETE /api/integrations/crm Crm sync controller disconnect #
POST /api/integrations/crm/{provider}/connect Crm sync controller connect #
POST /api/integrations/crm/{provider}/callback Crm sync controller callback #
GET /api/integrations/crm/fields Crm sync controller fields #
PUT /api/integrations/crm/settings Crm sync controller save settings #
POST /api/integrations/crm/push Crm sync controller push #
GET /api/integrations/crm/syncs Crm sync controller syncs #
GET /api/integrations/crm/leads/{leadId} Crm sync controller lead status #
GET /api/crm/nurture-setup Nurture controller read #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/heykairon-com:heykairon-com-crm-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

heykairon-com-crm-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kairon CRM API
  description: B2B agentic go-to-market platform
  version: 0.0.0
  contact: {}
servers: []
security:
- api-key: []
tags:
- name: CRM
paths:
  /api/crm/summary:
    get:
      operationId: CrmController_summary
      parameters:
      - name: q
        required: false
        in: query
        schema:
          minLength: 1
          maxLength: 200
          type: string
      - name: companyId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: qualificationStatus
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: ownerId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: tagId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: lastContacted
        required: false
        in: query
        schema:
          type: string
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm controller summary
      x-summary-source: derived
  /api/crm/cards:
    get:
      operationId: CrmController_cards
      parameters:
      - name: q
        required: false
        in: query
        schema:
          minLength: 1
          maxLength: 200
          type: string
      - name: companyId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: qualificationStatus
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: ownerId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: tagId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: lastContacted
        required: false
        in: query
        schema:
          type: string
      - name: stage
        required: true
        in: query
        schema:
          type: string
          enum:
          - new
          - invite_sent
          - connected
          - contacted
          - replied
          - interested
          - meeting_booked
          - won
          - on_hold
          - lost
          - discarded
      - name: limit
        required: false
        in: query
        schema:
          minimum: 1
          maximum: 100
          default: 25
          type: integer
      - name: cursor
        required: false
        in: query
        schema:
          maxLength: 65536
          type: string
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm controller cards
      x-summary-source: derived
  /api/crm/leads/{id}/stage:
    put:
      operationId: CrmController_setStage
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CrmStageDto'
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm controller set stage
      x-summary-source: derived
  /api/crm/leads/stage:
    post:
      operationId: CrmController_setStageMany
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CrmStageBulkDto'
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm controller set stage many
      x-summary-source: derived
  /api/crm/companies:
    get:
      operationId: CrmController_companies
      parameters:
      - name: q
        required: false
        in: query
        schema:
          minLength: 1
          maxLength: 200
          type: string
      - name: companyId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: qualificationStatus
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: ownerId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: tagId
        required: false
        in: query
        x-nestjs_zod-empty-type: true
        schema:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
      - name: lastContacted
        required: false
        in: query
        schema:
          type: string
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm controller companies
      x-summary-source: derived
  /api/integrations/crm:
    get:
      operationId: CrmSyncController_get
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller get
      x-summary-source: derived
    delete:
      operationId: CrmSyncController_disconnect
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller disconnect
      x-summary-source: derived
  /api/integrations/crm/{provider}/connect:
    post:
      operationId: CrmSyncController_connect
      parameters:
      - name: provider
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller connect
      x-summary-source: derived
  /api/integrations/crm/{provider}/callback:
    post:
      operationId: CrmSyncController_callback
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CrmCallbackDto'
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller callback
      x-summary-source: derived
  /api/integrations/crm/fields:
    get:
      operationId: CrmSyncController_fields
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller fields
      x-summary-source: derived
  /api/integrations/crm/settings:
    put:
      operationId: CrmSyncController_saveSettings
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CrmSettingsDto'
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller save settings
      x-summary-source: derived
  /api/integrations/crm/push:
    post:
      operationId: CrmSyncController_push
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CrmPushDto'
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller push
      x-summary-source: derived
  /api/integrations/crm/syncs:
    get:
      operationId: CrmSyncController_syncs
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller syncs
      x-summary-source: derived
  /api/integrations/crm/leads/{leadId}:
    get:
      operationId: CrmSyncController_leadStatus
      parameters:
      - name: leadId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Crm sync controller lead status
      x-summary-source: derived
  /api/crm/nurture-setup:
    get:
      operationId: NurtureController_read
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - CRM
      summary: Nurture controller read
      x-summary-source: derived
components:
  schemas:
    CrmStageDto:
      type: object
      properties:
        stage:
          type: string
          enum:
          - new
          - invite_sent
          - connected
          - contacted
          - replied
          - interested
          - meeting_booked
          - won
          - on_hold
          - lost
          - discarded
      required:
      - stage
    CrmStageBulkDto:
      type: object
      properties:
        ids:
          minItems: 1
          maxItems: 500
          type: array
          items:
            type: string
        stage:
          type: string
          enum:
          - new
          - invite_sent
          - connected
          - contacted
          - replied
          - interested
          - meeting_booked
          - won
          - on_hold
          - lost
          - discarded
      required:
      - ids
      - stage
    CrmPushDto:
      type: object
      properties:
        leadIds:
          minItems: 1
          maxItems: 1000
          type: array
          items:
            type: string
            minLength: 1
          description: The leads to send (lead ids, `lead_…`), at most 1000.
      required:
      - leadIds
    CrmSettingsDto:
      type: object
      properties:
        triggerStage:
          anyOf:
          - type: string
            enum:
            - invite_sent
            - connected
            - contacted
            - replied
            - interested
            - meeting_booked
            - won
          - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        mapping:
          maxItems: 60
          type: array
          items:
            type: object
            properties:
              from:
                type: string
                enum:
                - first_name
                - last_name
                - full_name
                - headline
                - summary
                - location
                - linkedin_url
                - email
                - stage
                - tags
                - qualification.status
                - current_company.name
                - current_company.domain
                - current_company.linkedin_url
                - current_company.industry
                - current_company.employee_count
                - current_company.location
                - fixed_value
              to:
                type: string
                minLength: 1
                maxLength: 200
                pattern: ^[A-Za-z][A-Za-z0-9_]*$
              defaultValue:
                anyOf:
                - type: string
                  maxLength: 1000
                - type: 'null'
              overwrite:
                type: boolean
              optional:
                type: boolean
            required:
            - from
            - to
            - defaultValue
            - overwrite
            - optional
          x-nestjs_zod-uses-3-point-1-syntax: true
        leadMapping:
          maxItems: 60
          type: array
          items:
            type: object
            properties:
              from:
                type: string
                enum:
                - first_name
                - last_name
                - full_name
                - headline
                - summary
                - location
                - linkedin_url
                - email
                - stage
                - tags
                - qualification.status
                - current_company.name
                - current_company.domain
                - current_company.linkedin_url
                - current_company.industry
                - current_company.employee_count
                - current_company.location
                - fixed_value
              to:
                type: string
                minLength: 1
                maxLength: 200
                pattern: ^[A-Za-z][A-Za-z0-9_]*$
              defaultValue:
                anyOf:
                - type: string
                  maxLength: 1000
                - type: 'null'
              overwrite:
                type: boolean
              optional:
                type: boolean
            required:
            - from
            - to
            - defaultValue
            - overwrite
            - optional
          x-nestjs_zod-uses-3-point-1-syntax: true
        pushMode:
          type: string
          enum:
          - salesforce_lead
          - contact
          x-nestjs_zod-uses-3-point-1-syntax: true
        convertLeads:
          type: boolean
          x-nestjs_zod-uses-3-point-1-syntax: true
        source:
          type: object
          properties:
            property:
              anyOf:
              - type: string
                minLength: 1
                maxLength: 200
                pattern: ^[A-Za-z][A-Za-z0-9_]*$
              - type: 'null'
            value:
              type: string
              minLength: 1
              maxLength: 255
          required:
          - property
          - value
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-self-required: false
      required:
      - triggerStage
      - mapping
    CrmCallbackDto:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 2000
        state:
          type: string
          minLength: 1
          maxLength: 4000
      required:
      - code
      - state
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: x-api-key
      description: 'A Kairon API key (Settings → Integrations → API access), sent as `x-api-key`. NOT an `Authorization: Bearer` token — that header belongs to the separate /mcp door and is ignored here.'
    session:
      type: apiKey
      in: cookie
      name: better-auth.session_token