> ## Documentation Index
> Fetch the complete documentation index at: https://docs.octavehq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a motion

> Create a new motion with a default playbook. The offering must pass motion eligibility (status ELIGIBLE). Returns 400 when status is INELIGIBLE or LIBRARY_ADJUSTMENT_REQUIRED.



## OpenAPI

````yaml post /api/v2/motion/create
openapi: 3.0.0
info:
  version: 6.0.0
  title: Octave API
  description: API for Octave workspace management and AI-powered content generation
servers:
  - url: https://app.octavehq.com
security:
  - ApiKeyAuth: []
paths:
  /api/v2/motion/create:
    post:
      tags:
        - Motion
      summary: Create a motion
      description: >-
        Create a new motion with a default playbook. The offering must pass
        motion eligibility (status ELIGIBLE). Returns 400 when status is
        INELIGIBLE or LIBRARY_ADJUSTMENT_REQUIRED.
      operationId: createMotion
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Motion name
                description:
                  type: string
                  description: Motion description
                offeringId:
                  type: string
                  description: Offering oId (product or service)
                motionType:
                  type: string
                  enum:
                    - NET_NEW
                    - UPSELL
                    - CROSS_SELL
                    - CONVERT_FREE_TO_PAID
                    - RENEW_AND_RETAIN
                    - DISPLACE_INCUMBENT
                  description: Motion type
                data:
                  type: object
                  properties:
                    overview:
                      type: array
                      nullable: true
                      items:
                        type: string
                      default: []
                    scope:
                      type: array
                      nullable: true
                      items:
                        type: string
                      default: []
                    additionalContext:
                      type: string
                      default: ''
                    attachedSources:
                      type: array
                      items:
                        type: object
                        properties:
                          type:
                            type: string
                          value:
                            type: string
                          displayValue:
                            type: string
                        required:
                          - type
                          - value
                      default: []
                    additionalProperties:
                      type: object
                      additionalProperties:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                          - type: number
                          - type: boolean
                    guidingNotes:
                      type: object
                      additionalProperties:
                        type: string
                  description: >-
                    Motion configuration data. Target-ICP exclusions are set via
                    the top-level excludedPersonaOIds/excludedSegmentOIds
                    fields, not here.
                srcOfferingId:
                  type: string
                  description: >-
                    Optional source/FROM offering oId (cross-sell,
                    convert-free-to-paid).
                competitorOId:
                  type: string
                  description: >-
                    Optional competitor oId being displaced
                    (displace-incumbent).
                coreFeatureOIds:
                  type: array
                  items:
                    type: string
                  description: Optional core-feature oIds to emphasize.
                excludedPersonaOIds:
                  type: array
                  items:
                    type: string
                  maxItems: 1000
                  description: >-
                    Persona oIds to exclude from the motion's target ICP.
                    Excluded personas still get matrix cells, but disabled. Must
                    be linked to the offering.
                excludedSegmentOIds:
                  type: array
                  items:
                    type: string
                  maxItems: 1000
                  description: >-
                    Segment oIds to exclude from the motion's target ICP.
                    Excluded segments still get matrix cells, but disabled. Must
                    be linked to the offering.
              required:
                - name
                - offeringId
                - motionType
                - data
      responses:
        '200':
          description: Created motion
          content:
            application/json:
              schema:
                type: object
                properties:
                  _metadata:
                    $ref: '#/components/schemas/Metadata'
                  data:
                    $ref: '#/components/schemas/Motion'
                required:
                  - _metadata
                  - data
        '400':
          description: >-
            Offering not eligible for motion creation (library matrix blockers
            or adjustment required)
          content:
            application/json:
              schema:
                type: object
                properties:
                  _metadata:
                    $ref: '#/components/schemas/Metadata'
                  message:
                    type: string
                required:
                  - _metadata
                  - message
      deprecated: false
components:
  schemas:
    Metadata:
      type: object
      properties:
        usage:
          type: number
          default: 0
          example: 0
          description: API usage
        requestId:
          type: string
          example: requestId
          description: Request ID
        message:
          type: string
          example: message
          description: Message
        timestamp:
          type: string
          example: '2021-01-01T00:00:00.000Z'
          description: Timestamp
      required:
        - requestId
        - timestamp
    Motion:
      type: object
      properties:
        oId:
          type: string
          description: Motion oId
        name:
          type: string
          description: Motion name
        description:
          type: string
          description: Motion description
        offering:
          type: object
          properties:
            oId:
              type: string
            type:
              type: string
              enum:
                - PRODUCT
                - SERVICE
                - SOLUTION
            name:
              type: string
            description:
              type: string
              nullable: true
          required:
            - oId
            - type
            - name
        srcOffering:
          type: object
          nullable: true
          properties:
            oId:
              type: string
            type:
              type: string
              enum:
                - PRODUCT
                - SERVICE
                - SOLUTION
            name:
              type: string
            description:
              type: string
              nullable: true
          required:
            - oId
            - type
            - name
        competitor:
          type: object
          nullable: true
          properties:
            oId:
              type: string
            name:
              type: string
            description:
              type: string
              nullable: true
          required:
            - oId
            - name
        coreFeatures:
          type: array
          items:
            type: object
            properties:
              oId:
                type: string
              name:
                type: string
              description:
                type: string
                nullable: true
            required:
              - oId
              - name
          default: []
        motionType:
          type: string
          enum:
            - NET_NEW
            - UPSELL
            - CROSS_SELL
            - CONVERT_FREE_TO_PAID
            - RENEW_AND_RETAIN
            - DISPLACE_INCUMBENT
          description: Motion type
        data:
          type: object
          properties:
            overview:
              type: array
              nullable: true
              items:
                type: string
              default: []
            scope:
              type: array
              nullable: true
              items:
                type: string
              default: []
            additionalContext:
              type: string
              default: ''
            attachedSources:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                  value:
                    type: string
                  displayValue:
                    type: string
                required:
                  - type
                  - value
              default: []
            additionalProperties:
              type: object
              additionalProperties:
                anyOf:
                  - type: string
                  - type: array
                    items:
                      type: string
                  - type: number
                  - type: boolean
            guidingNotes:
              type: object
              additionalProperties:
                type: string
            icpExclusions:
              type: object
              properties:
                personaOIds:
                  type: array
                  items:
                    type: string
                  default: []
                segmentOIds:
                  type: array
                  items:
                    type: string
                  default: []
        defaultPlaybookOId:
          type: string
          nullable: true
          description: Default playbook oId
        createdByUserOId:
          type: string
          nullable: true
        createdAt:
          type: string
          nullable: true
          format: date-time
          description: Creation date
        updatedAt:
          type: string
          nullable: true
          format: date-time
          description: Updated date
      required:
        - oId
        - name
        - offering
        - motionType
        - data
        - createdAt
        - updatedAt
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.