Opply Chats API

The Chats API from Opply — 7 operation(s) for chats.

Operations 8

GET /api/v1/channels/{channel_uuid}/messages/ #
POST /api/v1/channels/{channel_uuid}/messages/ #
POST /api/v1/channels/{channel_uuid}/messages/{id}/create-resumable-upload-session/ Request a resumable file upload URL #
POST /api/v1/channels/{channel_uuid}/messages/{id}/upload-complete/ Set an upload as done #
GET /api/v1/channels/chats/ #
GET /api/v1/channels/chats/{uuid}/ #
POST /api/v1/channels/chats/{uuid}/mark-read/ #
POST /api/v1/channels/chats/search-messages/ #

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/opply-chats-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

opply-chats-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Opply Activity Feed Chats API
  version: 0.0.0
servers:
- url: https://api.opply.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Chats
paths:
  /api/v1/channels/{channel_uuid}/messages/:
    get:
      operationId: api_v1_channels_messages_list
      parameters:
      - in: path
        name: channel_uuid
        schema:
          type: string
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      tags:
      - Chats
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedMessageList'
          description: ''
    post:
      operationId: api_v1_channels_messages_create
      parameters:
      - in: path
        name: channel_uuid
        schema:
          type: string
        required: true
      tags:
      - Chats
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Message'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Message'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Message'
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
          description: ''
  /api/v1/channels/{channel_uuid}/messages/{id}/create-resumable-upload-session/:
    post:
      operationId: api_v1_channels_messages_create_resumable_upload_session_create
      summary: Request a resumable file upload URL
      parameters:
      - in: path
        name: channel_uuid
        schema:
          type: string
        required: true
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this message.
        required: true
      tags:
      - Chats
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleUpload'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/GoogleUpload'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/GoogleUpload'
        required: true
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleUploadResponse'
          description: ''
  /api/v1/channels/{channel_uuid}/messages/{id}/upload-complete/:
    post:
      operationId: api_v1_channels_messages_upload_complete_create
      summary: Set an upload as done
      parameters:
      - in: path
        name: channel_uuid
        schema:
          type: string
        required: true
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this message.
        required: true
      tags:
      - Chats
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleUploadComplete'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/GoogleUploadComplete'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/GoogleUploadComplete'
        required: true
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/URL'
          description: ''
  /api/v1/channels/chats/:
    get:
      operationId: api_v1_channels_chats_list
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      tags:
      - Chats
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedChannelList'
          description: ''
  /api/v1/channels/chats/{uuid}/:
    get:
      operationId: api_v1_channels_chats_retrieve
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - Chats
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Channel'
          description: ''
  /api/v1/channels/chats/{uuid}/mark-read/:
    post:
      operationId: api_v1_channels_chats_mark_read_create
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - Chats
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnreadCount'
          description: ''
  /api/v1/channels/chats/search-messages/:
    post:
      operationId: api_v1_channels_chats_search_messages_create
      description: Endpoint to search messages or chats by text
      tags:
      - Chats
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchMessagesRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SearchMessagesRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SearchMessagesRequest'
        required: true
      security:
      - tokenAuth: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchMessagesResponse'
          description: ''
components:
  schemas:
    ChannelObjectHistory:
      type: object
      properties:
        object_type:
          type: string
          readOnly: true
        object_uuid:
          type: string
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
        action:
          oneOf:
          - $ref: '#/components/schemas/ChannelObjectHistoryActionEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        data: {}
      required:
      - created
      - object_type
      - object_uuid
    GoogleUploadComplete:
      type: object
      properties:
        token:
          type: string
      required:
      - token
    URL:
      type: object
      properties:
        url:
          type: string
          format: uri
      required:
      - url
    SearchMessagesRequest:
      type: object
      properties:
        text:
          type: string
      required:
      - text
    Message:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        text:
          type:
          - string
          - 'null'
        attachment:
          type:
          - string
          - 'null'
          format: uri
          readOnly: true
        sender:
          allOf:
          - $ref: '#/components/schemas/ShortUser'
          readOnly: true
        is_read:
          type: string
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
        channel:
          allOf:
          - $ref: '#/components/schemas/ChannelForMessage'
          readOnly: true
        buyer_name:
          type: string
          readOnly: true
        supplier_name:
          type: string
          readOnly: true
        file_name:
          type: string
          writeOnly: true
      required:
      - attachment
      - buyer_name
      - channel
      - created
      - is_read
      - modified
      - sender
      - supplier_name
      - uuid
    ChannelCompany:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
      required:
      - uuid
    Channel:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        new_messages_check:
          type: string
          format: date-time
        companies:
          type: array
          items:
            $ref: '#/components/schemas/ChannelCompany'
          readOnly: true
        latest_message:
          allOf:
          - $ref: '#/components/schemas/Message'
          readOnly: true
        related_object_type:
          type: string
          readOnly: true
        related_object_uuid:
          type: string
          format: uuid
          readOnly: true
        object_history:
          type: array
          items:
            $ref: '#/components/schemas/ChannelObjectHistory'
        buyer_name:
          type: string
          readOnly: true
        supplier_name:
          type: string
          readOnly: true
      required:
      - buyer_name
      - companies
      - latest_message
      - object_history
      - related_object_type
      - related_object_uuid
      - supplier_name
      - uuid
    UnreadCount:
      type: object
      properties:
        unread_count:
          type: integer
      required:
      - unread_count
    GoogleUploadResponse:
      type: object
      properties:
        url:
          type: string
          format: uri
        token:
          type: string
      required:
      - token
      - url
    ChannelForMessage:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        new_messages_check:
          type: string
          format: date-time
        companies:
          type: array
          items:
            $ref: '#/components/schemas/ChannelForMessageCompany'
          readOnly: true
        related_object_type:
          type: string
          readOnly: true
        related_object_uuid:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
        logo_url:
          type: string
          readOnly: true
      required:
      - companies
      - logo_url
      - name
      - related_object_type
      - related_object_uuid
      - uuid
    GoogleUpload:
      type: object
      properties:
        file_name:
          type: string
          maxLength: 1024
        size:
          type: integer
          minimum: 1
        content_type:
          type: string
          maxLength: 256
        field_name:
          type: string
          maxLength: 256
      required:
      - field_name
      - file_name
      - size
    ChannelObjectHistoryActionEnum:
      enum:
      - request_created
      - quote_created
      - contract_created
      - order_created
      - purchase_request_created
      - purchase_request_quote_created
      - purchase_request_order_created
      type: string
      description: '* `request_created` - Request Created

        * `quote_created` - Quote Created

        * `contract_created` - Contract Created

        * `order_created` - Order Created

        * `purchase_request_created` - Purchase Request Created

        * `purchase_request_quote_created` - Purchase Request Quote Created

        * `purchase_request_order_created` - Purchase Request Order Created'
    BlankEnum:
      enum:
      - ''
    ChannelForMessageCompany:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
      required:
      - uuid
    PaginatedMessageList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Message'
        unread_count:
          type: integer
          example: 123
    NullEnum:
      enum:
      - null
    PaginatedChannelList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Channel'
        unread_count:
          type: integer
          example: 123
    ShortUser:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        first_name:
          type: string
          maxLength: 150
        last_name_short:
          type: string
          readOnly: true
      required:
      - last_name_short
      - uuid
    SearchMessagesResponse:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        matched_text:
          type: string
          readOnly: true
        text:
          type:
          - string
          - 'null'
        attachment:
          type:
          - string
          - 'null'
          format: uri
        sender:
          type: integer
        sender_name:
          type: string
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
        channel:
          $ref: '#/components/schemas/ChannelForMessage'
        page_number:
          type: string
          readOnly: true
      required:
      - channel
      - created
      - matched_text
      - modified
      - page_number
      - sender
      - sender_name
      - uuid
  securitySchemes:
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Token-based authentication with required prefix "Token"