Chatway API

Chatway API as documented publicly: 21 operations. Contract generated from the documentation by API Evangelist (2026-11-04); not the provider's own document.

Operations 21

GET /.well-known/agent-skills/index.json GET /.well-known/agent-skills/index.json #
GET /.well-known/agent-skills/{skill}/SKILL.md Get an agent skill #
GET /agents List Agents. #
POST /agents/invite Invite Agents #
GET /api/v1/agents GET /api/v1/agents #
POST /api/v1/agents/invite POST /api/v1/agents/invite #
GET /api/v1/agents/{id} Get Agent Retrieve one agent's profile, availability and team role. #
GET /api/v1/contacts GET /api/v1/contacts #
POST /api/v1/messages POST /api/v1/messages #
POST /api/v1/webhooks POST /api/v1/webhooks #
GET /api/v1/webhooks/{webhook} GET /api/v1/webhooks/{webhook} #
GET /api/v1/widgets GET /api/v1/widgets #
GET /auth.md Authentication guide - Chatway Developer Docs #
GET /contacts Read paginated contacts #
POST /contacts/initialize Initialize a contact without using the visitor-message workflow with POST /contacts/initialize . This operation spells the widget parameter widgetId . #
POST /conversations Send as a visitor with Create Visitor Message : POST /conversations requires widget_id and content , and selects or creates the contact and conversation. #
GET /conversations/all You do not need to call GET /conversations/all first if you already have data.conversation.id from the webhook. #
GET /conversations/{id}/messages List messages for a conversation #
POST /conversations/{id}/resolve Resolve a conversation #
POST /messages Send a reply to a conversation via POST /messages. #
GET /widgets Read widget list #

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/chatway-app:chatway-app-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

chatway-app-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Chatway API
  version: '2026-11-04'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-04: 21 operation(s) read from 13 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Chatway has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 10
    documentation: 11
    pages-with-code: 12
    pages-read: 13
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-04'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://developers.chatway.app/operations/guides.quickstart
  - https://developers.chatway.app/operations/guides.api_overview
  - https://developers.chatway.app/operations/api-docs.agents.show
  - https://developers.chatway.app/operations/api-docs.agents.index
  - https://developers.chatway.app/operations/api-docs.agents.store
  - https://developers.chatway.app/operations/apiDocs.apiDocsAuthMd
  - https://developers.chatway.app/operations/api-docs.webhooks.show
  - https://developers.chatway.app/operations/api-docs.widgets.index
  - https://developers.chatway.app/operations/guides.testing_the_api
  - https://developers.chatway.app/operations/api-docs.webhooks.store
  - https://developers.chatway.app/operations/apiDocsAgentSkills.show
  - https://developers.chatway.app/operations/api-docs.webhooks.events
  - https://developers.chatway.app/operations/apiDocsAgentSkills.index
paths:
  /.well-known/agent-skills/index.json:
    get:
      operationId: get_well_known_agent_skills_index_json
      tags:
      - API
      summary: GET /.well-known/agent-skills/index.json
      x-source: https://developers.chatway.app/operations/apiDocsAgentSkills.index
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWellKnownAgentSkillsIndexJsonResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET \"https://developers.chatway.app/.well-known/agent-skills/index.json\" Responses 200 application/json $schema (string,\
          \ required) skills (array<object>, required) name (string) type (string) description (string) url (string (uri-reference)) digest (string)\
          \ Examples Response 200 example {\n \"$schema\": \"https://schemas.agentskills.io/discovery/0.2.0/schema.json\",\n \"skills\": [\n {\n\
          \ \"name\": \"ch"
  /.well-known/agent-skills/{skill}/SKILL.md:
    get:
      operationId: get_well_known_agent_skills_skill_SKILL_md
      tags:
      - API
      summary: Get an agent skill
      x-source: https://developers.chatway.app/operations/apiDocsAgentSkills.show
      parameters:
      - name: skill
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWellKnownAgentSkillsSkillSkillMdResponse'
      x-evidence:
        kind: documentation
  /agents:
    get:
      operationId: get_agents
      tags:
      - Agents
      summary: List Agents.
      description: Retrieves a list of agents.
      x-source: https://developers.chatway.app/operations/guides.quickstart
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /agents/invite:
    post:
      operationId: post_agents_invite
      tags:
      - Agents
      summary: Invite Agents
      x-source: https://developers.chatway.app/operations/api-docs.agents.store
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAgentsInviteRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAgentsInviteResponse'
      x-evidence:
        kind: documentation
  /api/v1/agents:
    get:
      operationId: get_api_v1_agents
      tags:
      - Api
      summary: GET /api/v1/agents
      x-source: https://developers.chatway.app/operations/api-docs.agents.index
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1AgentsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -G "https://developers.chatway.app/api/v1/agents"  -H "X-API-KEY: your_api_key"  --data-urlencode "limit=20"  --data-urlencode
          "page=1" Parameters Name In Required Type Description email query No string|null (email) Optional email filter. Omit it to request the
          list without an email filter. limit query No integer|null Maximum agents per page. Default: 20. Allowed range: 1–100. page query No
          i'
  /api/v1/agents/invite:
    post:
      operationId: post_api_v1_agents_invite
      tags:
      - Api
      summary: POST /api/v1/agents/invite
      x-source: https://developers.chatway.app/operations/api-docs.agents.store
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1AgentsInviteRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1AgentsInviteResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST \"https://developers.chatway.app/api/v1/agents/invite\"  -H \"X-API-KEY: your_api_key\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"agents\": [\n {\n \"email\": \" [email protected] \",\n \"name\": \"John Doe\",\n \"role\": \"CHAT_AGENT_ADMIN\"\n }\n\
          \ ]\n}' Request body application/json agents (array<object>, required) — Agents to invite. Each item is an object with a required `email`,\
          \ an optional `name` an"
  /api/v1/agents/{id}:
    get:
      operationId: get_api_v1_agents_id
      tags:
      - Api
      summary: Get Agent Retrieve one agent's profile, availability and team role.
      x-source: https://developers.chatway.app/operations/api-docs.agents.show
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1AgentsIdResponse'
      x-evidence:
        kind: documentation
  /api/v1/contacts:
    get:
      operationId: get_api_v1_contacts
      tags:
      - Api
      summary: GET /api/v1/contacts
      x-source: https://developers.chatway.app/operations/guides.testing_the_api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET \"https://developers.chatway.app/api/v1/contacts\"  -H \"X-API-KEY: your_api_key\"  -H \"Accept: application/json\"\
          \n Replace method, path, and body to match the operation you are testing. A 401 usually means a missing or invalid key; 422 means the\
          \ payload or query string failed validation. \n Confirm authentication \n Run a simple read-only call such as GET /contacts or GET /widgets\
          \ : \n 200 : "
  /api/v1/messages:
    post:
      operationId: post_api_v1_messages
      tags:
      - Api
      summary: POST /api/v1/messages
      x-source: https://developers.chatway.app/operations/guides.quickstart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1MessagesRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1MessagesResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST \"https://developers.chatway.app/api/v1/messages\"  -H \"X-API-KEY: your_api_key\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"conversation_id\": \"0f46c0a1-8938-40e3-b2b5-bb56f569fcab\",\n \"agent_id\": \"26fa75f2-7ac1-47b4-84e1-b943491ba4da\",\n\
          \ \"content\": \"Thanks for reaching out! How can I help?\"\n }'\n A successful reply returns 201 with the created message. See API\
          \ Reference → Messages → Cre"
  /api/v1/webhooks:
    post:
      operationId: post_api_v1_webhooks
      tags:
      - Api
      summary: POST /api/v1/webhooks
      x-source: https://developers.chatway.app/operations/api-docs.webhooks.store
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1WebhooksRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1WebhooksResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST \"https://developers.chatway.app/api/v1/webhooks\"  -H \"X-API-KEY: your_api_key\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"name\": \"John Doe\",\n \"endpoint_url\": \"endpoint url\",\n \"is_active\": true,\n \"events\": [\n \"conversation.created\"\
          \n ]\n}' Request body application/json name (string, required) endpoint_url (string, required) is_active (boolean) events (array<string\
          \ enum: conversation.c"
  /api/v1/webhooks/{webhook}:
    get:
      operationId: get_api_v1_webhooks_webhook
      tags:
      - Api
      summary: GET /api/v1/webhooks/{webhook}
      x-source: https://developers.chatway.app/operations/api-docs.webhooks.show
      parameters:
      - name: webhook
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1WebhooksWebhookResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET \"https://developers.chatway.app/api/v1/webhooks/{webhook}\"  -H \"X-API-KEY: your_api_key\" Parameters Name In\
          \ Required Type Description webhook path Yes string Responses 200 WebhookResource \n application/json data (object, required) type (string,\
          \ required) id (string, required) attributes (array, required) mock (boolean, required) 403 Examples Response 200 example {\n \"data\"\
          : {\n \"type\": \""
  /api/v1/widgets:
    get:
      operationId: get_api_v1_widgets
      tags:
      - Api
      summary: GET /api/v1/widgets
      x-source: https://developers.chatway.app/operations/guides.quickstart
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET \"https://developers.chatway.app/api/v1/widgets\"  -H \"X-API-KEY: your_api_key\"  -H \"Accept: application/json\"\
          \n If authentication is successful, Chatway returns 200 with JSON data. \n 5. Set up webhooks \n Webhooks notify your application when\
          \ something happens in Chatway, so you do not need to poll the API for new messages. \n In your Chatway dashboard, go to Settings →\
          \ Developer Tools → W"
  /auth.md:
    get:
      operationId: get_auth_md
      tags:
      - Auth
      summary: Authentication guide - Chatway Developer Docs
      description: Retrieves the public Markdown authentication guide.
      x-source: https://developers.chatway.app/operations/apiDocs.apiDocsAuthMd
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAuthMdResponse'
      x-evidence:
        kind: documentation
  /contacts:
    get:
      operationId: get_contacts
      tags:
      - Contacts
      summary: Read paginated contacts
      x-source: https://developers.chatway.app/operations/guides.testing_the_api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /contacts/initialize:
    post:
      operationId: post_contacts_initialize
      tags:
      - Contacts
      summary: Initialize a contact without using the visitor-message workflow with POST /contacts/initialize . This operation spells the widget
        parameter widgetId .
      description: Initialize visitor contacts.
      x-source: https://developers.chatway.app/operations/guides.api_overview
      parameters:
      - name: widgetId
        in: query
        required: true
        schema:
          type: string
        description: Widget identifier used to initialize the contact.
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /conversations:
    post:
      operationId: post_conversations
      tags:
      - Conversations
      summary: 'Send as a visitor with Create Visitor Message : POST /conversations requires widget_id and content , and selects or creates the
        contact and conversation.'
      description: Send new messages into a conversation.
      x-source: https://developers.chatway.app/operations/guides.api_overview
      parameters:
      - name: widget_id
        in: query
        required: true
        schema:
          type: string
        description: Identifier of the widget used to create the visitor message.
      - name: content
        in: query
        required: true
        schema:
          type: string
        description: Content of the visitor message.
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /conversations/all:
    get:
      operationId: get_conversations_all
      tags:
      - Conversations
      summary: You do not need to call GET /conversations/all first if you already have data.conversation.id from the webhook.
      description: Retrieves all conversations.
      x-source: https://developers.chatway.app/operations/guides.quickstart
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /conversations/{id}/messages:
    get:
      operationId: get_conversations_id_messages
      tags:
      - Conversations
      summary: List messages for a conversation
      x-source: https://developers.chatway.app/operations/guides.testing_the_api
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /conversations/{id}/resolve:
    post:
      operationId: post_conversations_id_resolve
      tags:
      - Conversations
      summary: Resolve a conversation
      x-source: https://developers.chatway.app/operations/guides.testing_the_api
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /messages:
    post:
      operationId: post_messages
      tags:
      - Messages
      summary: Send a reply to a conversation via POST /messages.
      description: Creates a new message in a conversation. Returns 201 with the created message.
      x-source: https://developers.chatway.app/operations/guides.quickstart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMessagesRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /widgets:
    get:
      operationId: get_widgets
      tags:
      - Widgets
      summary: Read widget list
      x-source: https://developers.chatway.app/operations/guides.testing_the_api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    GetWellKnownAgentSkillsIndexJsonResponse:
      type: object
      properties:
        $schema:
          type: string
        skills:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              type:
                type: string
              description:
                type: string
              url:
                type: string
              digest:
                type: string
    GetWellKnownAgentSkillsSkillSkillMdResponse:
      type: object
      properties:
        '200':
          type: string
          description: text/markdown; charset=UTF-8
    PostAgentsInviteRequest:
      type: object
      properties:
        agents:
          type: array
          description: Agents to invite. Each item is an object with a required `email`, an optional `name` and an optional `role` (`CHAT_AGENT_MEMBER`
            or `CHAT_AGENT_ADMIN`).
        email:
          type: string
          description: Email address of the teammate.
        name:
          type: string
          description: Name of the teammate.
        role:
          type: string
          description: Invitation role (`CHAT_AGENT_MEMBER` or `CHAT_AGENT_ADMIN`).
      required:
      - agents
      - email
    PostAgentsInviteResponse:
      type: object
      properties:
        message:
          type: string
          description: Result message.
    GetApiV1AgentsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              id:
                type: string
              attributes:
                type: object
                properties:
                  email:
                    type: string
                  name:
                    type: string
                  status:
                    type: string
                  online_status:
                    type: string
                  profile_photo_url:
                    type:
                    - string
                    - 'null'
                  resized_profile_photo_url:
                    type:
                    - string
                    - 'null'
                  role:
                    type: string
        meta:
          type: object
          properties:
            pagination:
              type: object
              properties:
                total:
                  type: integer
                count:
                  type: integer
                per_page:
                  type: integer
                current_page:
                  type: integer
                total_pages:
                  type: integer
        links:
          type: object
          properties:
            self:
              type: string
            first:
              type: string
            next:
              type:
              - string
              - 'null'
            last:
              type: string
    PostApiV1AgentsInviteRequest:
      type: object
      properties:
        agents:
          type: array
          items:
            type: object
            properties:
              email:
                type: string
              name:
                type: string
              role:
                type: string
    PostApiV1AgentsInviteResponse:
      type: object
      properties:
        agents:
          type: array
          items:
            type: object
            properties:
              email:
                type: string
              name:
                type: string
              role:
                type: string
    GetApiV1AgentsIdResponse:
      type: object
      properties:
        data:
          type: object
          description: Agent object
        type:
          type: string
          description: Agent type
        id:
          type: string
          description: Agent ID
        attributes:
          type: object
          description: Agent attributes
        email:
          type: string
          description: Agent email
        name:
          type: string
          description: Agent name
        status:
          type: string
          description: Agent status
        online_status:
          type: string
          description: Agent online status
        profile_photo_url:
          type: string
          description: URL of the agent's profile photo
        resized_profile_photo_url:
          type: string
          description: URL of the resized profile photo
        role:
          type: string
          description: Agent role
    PostApiV1MessagesRequest:
      type: object
      properties:
        conversation_id:
          type: string
        agent_id:
          type: string
        content:
          type: string
    PostApiV1MessagesResponse:
      type: object
      properties:
        message:
          type: string
        errors:
          type: object
          properties:
            limit:
              type: array
              items:
                type: string
    PostApiV1WebhooksRequest:
      type: object
      properties:
        name:
          type: string
        endpoint_url:
          type: string
        is_active:
          type: boolean
        events:
          type: array
          items:
            type: string
    PostApiV1WebhooksResponse:
      type: object
      properties:
        message:
          type: string
        data:
          type: object
          properties:
            type:
              type: string
            id:
              type: string
            attributes:
              type: array
              items: {}
        mock:
          type: boolean
    GetApiV1WebhooksWebhookResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
            id:
              type: string
            attributes:
              type: array
              items: {}
        mock:
          type: boolean
    GetAuthMdResponse:
      type: object
      properties:
        '200':
          type: string
          description: text/markdown; charset=UTF-8
        '404':
          type: string
    PostMessagesRequest:
      type: object
      properties:
        conversation_id:
          type: string
          description: The ID of the conversation to which the reply is sent.
        agent_id:
          type: string
          description: The ID of the agent sending the reply.
        content:
          type: string
          description: The message content.
      required:
      - conversation_id
      - agent_id
      - content
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY
security:
- apiKey: []
tags:
- name: API
- name: Agents
- name: Api
- name: Auth
- name: Contacts
- name: Conversations
- name: Messages
- name: Widgets