Moveworks messages API

The messages API from Moveworks — 3 operation(s) for messages.

OpenAPI Specification

moveworks-messages-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: (Beta) Conversations authentication messages API
  version: 1.0.0
servers:
- url: https://api.moveworks.ai/rest/v1beta1
  description: US production server
- url: https://api.jp.moveworks.com/rest/v1beta1
  description: Japan production server
- url: https://api.uk.moveworks.com/rest/v1beta1
  description: UK production server
- url: https://api.prod4.us.moveworks.com/rest/v1beta1
  description: US Prod 4 production server
- url: https://api.prod3.us.moveworks.com/rest/v1beta1
  description: US Prod 3 production server
tags:
- name: messages
paths:
  /conversations/{conversation_id}/messages:
    get:
      operationId: list-conversation-messages
      summary: List conversation messages
      description: Retrieves all messages (both user and assistant) in a conversation in descending order by creation time (most recent first).
      tags:
      - messages
      parameters:
      - name: conversation_id
        in: path
        description: A base-62 identifier prefixed by a short resource type
        required: true
        schema:
          type: string
      - name: cursor
        in: query
        description: Opaque cursor for pagination
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of messages to return (1-100)
        required: false
        schema:
          type: integer
          default: 20
      - name: Authorization
        in: header
        description: JWT bearer token authentication. Obtain an access token from the Moveworks auth endpoint and include it in the Authorization header as 'Bearer <token>'.
        required: true
        schema:
          type: string
      - name: Assistant-Name
        in: header
        description: The Moveworks assistant identifier that was configured for your organization.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of messages
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListConversationMessagesResponse'
        '400':
          description: Bad request - Invalid input parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidCursorErrorResponse'
        '401':
          description: Unauthorized - Invalid or missing authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        '403':
          description: Forbidden - Invalid assistant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
        '404':
          description: Not found - Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitExceededErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
  /conversations/{conversation_id}/responses/{response_id}/messages:
    get:
      operationId: list-response-messages
      summary: List response messages
      description: Retrieves all messages associated with a specific response (both the user's input message and all assistant reply messages).
      tags:
      - messages
      parameters:
      - name: conversation_id
        in: path
        description: A base-62 identifier prefixed by a short resource type
        required: true
        schema:
          type: string
      - name: response_id
        in: path
        description: A base-62 identifier prefixed by a short resource type
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: JWT bearer token authentication. Obtain an access token from the Moveworks auth endpoint and include it in the Authorization header as 'Bearer <token>'.
        required: true
        schema:
          type: string
      - name: Assistant-Name
        in: header
        description: The Moveworks assistant identifier that was configured for your organization.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of messages for this response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResponseMessagesResponse'
        '401':
          description: Unauthorized - Invalid or missing authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        '403':
          description: Forbidden - Invalid assistant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
        '404':
          description: Not found - Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitExceededErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
  /conversations/{conversation_id}/responses/{response_id}/messages/{message_id}/feedback:
    post:
      operationId: submit-feedback
      summary: Submit feedback
      description: 'Submits a feedback rating (helpful or unhelpful) for a specific assistant message.


        Use the `callback_id` from the message''s `feedback` field to indicate which rating is being submitted. The `callback_id` is an opaque token. Pass it back exactly as received.


        Optionally include `additional_feedback` for free-text comments.'
      tags:
      - messages
      parameters:
      - name: conversation_id
        in: path
        description: A base-62 identifier prefixed by a short resource type
        required: true
        schema:
          type: string
      - name: response_id
        in: path
        description: A base-62 identifier prefixed by a short resource type
        required: true
        schema:
          type: string
      - name: message_id
        in: path
        description: A base-62 identifier prefixed by a short resource type
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: JWT bearer token authentication. Obtain an access token from the Moveworks auth endpoint and include it in the Authorization header as 'Bearer <token>'.
        required: true
        schema:
          type: string
      - name: Assistant-Name
        in: header
        description: The Moveworks assistant identifier that was configured for your organization.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Feedback submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmitFeedbackResponse'
        '400':
          description: Invalid request - the callback_id is malformed, does not match this message, or this message does not support feedback
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidFeedbackErrorResponse'
        '404':
          description: Not found - conversation, response, or message does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitExceededErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitFeedbackRequest'
components:
  schemas:
    MarkdownTextContent:
      type: object
      properties:
        text:
          type: string
          description: Raw markdown text content. Used when Minerva's chat response `is_commonmark` is not set.
      required:
      - text
      title: MarkdownTextContent
    RateLimitExceededErrorResponseError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/RateLimitExceededErrorResponseErrorCode'
        message:
          type: string
      required:
      - code
      - message
      title: RateLimitExceededErrorResponseError
    NotFoundErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/NotFoundErrorResponseError'
      required:
      - error
      description: Error response for resource not found
      title: NotFoundErrorResponse
    InvalidCursorErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/InvalidCursorErrorResponseError'
      required:
      - error
      description: Error response for invalid pagination cursor
      title: InvalidCursorErrorResponse
    CitationLocation:
      type: object
      properties:
        offset:
          type: integer
          description: Zero-based character position in the assistant message where the citation should be inserted
      description: '**Deprecated:** Use `Message.content_references` for positional data instead. This field will no longer be populated starting May 12, 2026 for both new and existing messages.'
      title: CitationLocation
    InvalidCursorErrorResponseErrorCode:
      type: string
      enum:
      - INVALID_CURSOR
      title: InvalidCursorErrorResponseErrorCode
    MessageFeedback:
      type: object
      properties:
        helpful:
          $ref: '#/components/schemas/FeedbackOption'
          description: Positive feedback option. Use this callback_id to rate the response as helpful.
        unhelpful:
          $ref: '#/components/schemas/FeedbackOption'
          description: Negative feedback option. Use this callback_id to rate the response as unhelpful.
      description: Feedback options available on an assistant message. When present, this message supports feedback and the callback IDs can be used to submit a rating.
      title: MessageFeedback
    SubmitFeedbackResponseStatus:
      type: string
      enum:
      - SUBMITTED
      description: Feedback submission status
      title: SubmitFeedbackResponseStatus
    Content:
      oneOf:
      - type: object
        properties:
          type:
            $ref: '#/components/schemas/PlainTextContentItemType'
            description: Content type discriminator
          plain_text:
            $ref: '#/components/schemas/PlainTextContent'
        required:
        - type
        - plain_text
        description: PLAIN_TEXT variant
      - type: object
        properties:
          type:
            $ref: '#/components/schemas/CommonmarkTextContentItemType'
            description: Content type discriminator
          commonmark_text:
            $ref: '#/components/schemas/CommonmarkTextContent'
        required:
        - type
        - commonmark_text
        description: COMMONMARK_TEXT variant
      - type: object
        properties:
          type:
            $ref: '#/components/schemas/MarkdownTextContentItemType'
            description: Content type discriminator
          markdown_text:
            $ref: '#/components/schemas/MarkdownTextContent'
        required:
        - type
        - markdown_text
        description: MARKDOWN_TEXT variant
      discriminator:
        propertyName: type
      description: Message content with type discriminator
      title: Content
    InvalidCursorErrorResponseError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/InvalidCursorErrorResponseErrorCode'
        message:
          type: string
      required:
      - code
      - message
      title: InvalidCursorErrorResponseError
    PlainTextContent:
      type: object
      properties:
        text:
          type: string
          description: Plain text content
      required:
      - text
      title: PlainTextContent
    UnauthorizedErrorResponseError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/UnauthorizedErrorResponseErrorCode'
        message:
          type: string
      required:
      - code
      - message
      title: UnauthorizedErrorResponseError
    UnauthorizedErrorResponseErrorCode:
      type: string
      enum:
      - UNAUTHORIZED
      title: UnauthorizedErrorResponseErrorCode
    ForbiddenErrorResponseError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/ForbiddenErrorResponseErrorCode'
        message:
          type: string
      required:
      - code
      - message
      title: ForbiddenErrorResponseError
    Attribute:
      type: object
      properties:
        key:
          type: string
          description: Attribute name
        value:
          type: string
          description: Attribute value
      required:
      - key
      - value
      description: Key-value pair for citation display metadata. This is an opaque structure that contains rendering hints specific to each citation. Clients should not make assumptions about the keys or values present, as they may vary based on citation type and context.
      title: Attribute
    Message:
      type: object
      properties:
        message_id:
          type: string
          description: A base-62 identifier prefixed by a short resource type
        conversation_id:
          type: string
          description: A base-62 identifier prefixed by a short resource type
        response_id:
          type: string
          description: A base-62 identifier prefixed by a short resource type
        actor:
          $ref: '#/components/schemas/ActorType'
        content:
          $ref: '#/components/schemas/Content'
        citations:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Citation'
          description: Unique citation references in the assistant message. Use `content_references` to determine where in the message text each citation is referenced.
        content_references:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CitationContentReference'
          description: Ordered positions in the message text where citations appear (ascending by offset). Each entry references a `Citation` via `citation_id`. Only populated on assistant messages.
        created_at:
          type: string
          format: date-time
          description: Creation timestamp (ISO 8601)
        feedback:
          oneOf:
          - $ref: '#/components/schemas/MessageFeedback'
          - type: 'null'
          description: Feedback options for this message. Present only on final assistant messages that support feedback. Use the callback IDs to submit a rating via the feedback endpoint.
      required:
      - message_id
      - conversation_id
      - response_id
      - actor
      - content
      - created_at
      title: Message
    NotFoundErrorResponseError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/NotFoundErrorResponseErrorCode'
        message:
          type: string
      required:
      - code
      - message
      title: NotFoundErrorResponseError
    InvalidFeedbackErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/InvalidFeedbackErrorResponseError'
      required:
      - error
      description: Error response for invalid feedback submission
      title: InvalidFeedbackErrorResponse
    Display:
      type: object
      properties:
        title:
          $ref: '#/components/schemas/Content'
          description: Primary heading/identifier with type discriminator
        body:
          $ref: '#/components/schemas/Content'
          description: Body/description content with type discriminator
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/Attribute'
          description: Opaque key-value metadata for citation display. These attributes contain implementation-specific rendering hints and should be treated as a black-box by clients. The structure and values may vary between citations and should not be relied upon for business logic.
      title: Display
    Citation:
      type: object
      properties:
        citation_id:
          type: string
          description: 'Unique citation identifier (format: `cite_<base62>`). Use this to join with `content_references` on the Message object.'
        location:
          $ref: '#/components/schemas/CitationLocation'
          description: '**Deprecated:** Use `Message.content_references` for positional data instead. This field will no longer be populated starting May 12, 2026 for both new and existing messages.'
        url:
          type: string
          format: uri
          description: URL to the entity
        display:
          $ref: '#/components/schemas/Display'
      title: Citation
    InternalErrorResponseErrorCode:
      type: string
      enum:
      - INTERNAL_ERROR
      title: InternalErrorResponseErrorCode
    SubmitFeedbackResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/SubmitFeedbackResponseStatus'
          description: Feedback submission status
      required:
      - status
      title: SubmitFeedbackResponse
    Metadata:
      type: object
      properties:
        next_cursor:
          type:
          - string
          - 'null'
          description: Opaque cursor for next page (null if no more results)
      title: Metadata
    ForbiddenErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ForbiddenErrorResponseError'
      required:
      - error
      description: Error response for forbidden access
      title: ForbiddenErrorResponse
    ForbiddenErrorResponseErrorCode:
      type: string
      enum:
      - FORBIDDEN
      title: ForbiddenErrorResponseErrorCode
    ActorType:
      type: string
      enum:
      - USER
      - ASSISTANT
      description: Message actor type
      title: ActorType
    CitationContentReference:
      type: object
      properties:
        citation_id:
          type: string
          description: References `Citation.citation_id` to link this position to a citation entity.
        offset:
          type: integer
          description: Zero-based character position in the assistant message where the citation appears.
      required:
      - citation_id
      - offset
      title: CitationContentReference
    InvalidFeedbackErrorResponseErrorCode:
      type: string
      enum:
      - INVALID_REQUEST
      title: InvalidFeedbackErrorResponseErrorCode
    SubmitFeedbackRequest:
      type: object
      properties:
        callback_id:
          type: string
          description: The callback_id from either `feedback.helpful` or `feedback.unhelpful` on the message object. Determines which rating (helpful or unhelpful) is being submitted.
        additional_feedback:
          type: string
          description: Optional free-text feedback from the user. Use this to capture additional context about why the user rated the response this way.
      required:
      - callback_id
      title: SubmitFeedbackRequest
    FeedbackOption:
      type: object
      properties:
        callback_id:
          type: string
          description: Opaque callback identifier. Pass this value to the feedback endpoint to submit this rating.
      required:
      - callback_id
      title: FeedbackOption
    MarkdownTextContentItemType:
      type: string
      enum:
      - MARKDOWN_TEXT
      description: Content type discriminator
      title: MarkdownTextContentItemType
    CommonmarkTextContent:
      type: object
      properties:
        text:
          type: string
          description: Commonmark-formatted text content
      required:
      - text
      title: CommonmarkTextContent
    RateLimitExceededErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/RateLimitExceededErrorResponseError'
      required:
      - error
      description: Error response for rate limit exceeded
      title: RateLimitExceededErrorResponse
    RateLimitExceededErrorResponseErrorCode:
      type: string
      enum:
      - RATE_LIMIT_EXCEEDED
      title: RateLimitExceededErrorResponseErrorCode
    CommonmarkTextContentItemType:
      type: string
      enum:
      - COMMONMARK_TEXT
      description: Content type discriminator
      title: CommonmarkTextContentItemType
    PlainTextContentItemType:
      type: string
      enum:
      - PLAIN_TEXT
      description: Content type discriminator
      title: PlainTextContentItemType
    ListResponseMessagesResponse:
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
          description: Array of messages for this response
      required:
      - messages
      title: ListResponseMessagesResponse
    NotFoundErrorResponseErrorCode:
      type: string
      enum:
      - NOT_FOUND
      title: NotFoundErrorResponseErrorCode
    InternalErrorResponseError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/InternalErrorResponseErrorCode'
        message:
          type: string
      required:
      - code
      - message
      title: InternalErrorResponseError
    InternalErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/InternalErrorResponseError'
      required:
      - error
      description: Error response for internal server error
      title: InternalErrorResponse
    InvalidFeedbackErrorResponseError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/InvalidFeedbackErrorResponseErrorCode'
        message:
          type: string
      required:
      - code
      - message
      title: InvalidFeedbackErrorResponseError
    UnauthorizedErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/UnauthorizedErrorResponseError'
      required:
      - error
      description: Error response for unauthorized access
      title: UnauthorizedErrorResponse
    ListConversationMessagesResponse:
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
          description: Array of messages
        metadata:
          $ref: '#/components/schemas/Metadata'
          description: Metadata (pagination)
      required:
      - messages
      title: ListConversationMessagesResponse
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: JWT bearer token authentication. Obtain an access token from the Moveworks auth endpoint and include it in the Authorization header as 'Bearer <token>'.