> ## 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 Alternative

> Create a new alternative (status quo / incumbent / DIY pattern)



## OpenAPI

````yaml post /api/v2/alternative/create
openapi: 3.0.0
info:
  version: 1.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/alternative/create:
    post:
      tags:
        - Alternative
      summary: Create Alternative
      description: Create a new alternative (status quo / incumbent / DIY pattern)
      operationId: createAlternative
      requestBody:
        description: Alternative creation input
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  description: The external name of the status quo / incumbent alternative
                  example: Manual spreadsheet workflow
                internalName:
                  type: string
                  description: The internal name of the alternative
                  example: Excel + email research stack
                description:
                  type: string
                  description: A description of the alternative
                  example: >-
                    Prospects stitch together spreadsheets and email to track
                    outreach
                whereItWorks:
                  type: array
                  items:
                    type: string
                  description: >-
                    Conditions and contexts where this alternative genuinely
                    holds up
                  example:
                    - Small team with one owner
                    - Low deal volume
                whereItBreaks:
                  type: array
                  items:
                    type: string
                  description: >-
                    Concrete failure modes and triggers where this approach
                    stops working
                  example:
                    - Cross-team handoffs
                    - Compliance review
                whoChampionsThisApproach:
                  type: array
                  items:
                    type: string
                  description: >-
                    Personas or mindsets that advocate for this path and resist
                    change
                  example:
                    - Frugal ops lead
                    - Founder who built the spreadsheet
                whyOurApproachIsSuperior:
                  type: array
                  items:
                    type: string
                  description: >-
                    Specific ways the offering addresses gaps and failure modes
                    of this alternative
                  example:
                    - Single system of record
                    - Auditable workflow
                perceivedBenefits:
                  type: array
                  items:
                    type: string
                  description: >-
                    Why this approach feels rational, safe, or good enough
                    organizationally
                  example:
                    - No new vendor risk
                    - Familiar tools
                hiddenCostsAndPitfalls:
                  type: array
                  items:
                    type: string
                  description: >-
                    Non-obvious costs, compounding debt, and second-order risks
                    over time
                  example:
                    - Tribal knowledge loss
                    - Rework when owners rotate
                customFields:
                  allOf:
                    - $ref: '#/components/schemas/CustomDataFields'
                    - description: Custom fields for additional alternative information
                primaryOfferingOId:
                  type: string
                  description: >-
                    Primary Offering to use as context when creating
                    alternatives. If not provided, the primary company attached
                    to the Workspace will be used.
                  example: o_123456
                linkingStrategy:
                  allOf:
                    - $ref: '#/components/schemas/LinkingStrategy'
                    - description: >-
                        Strategy for linking this alternative to offerings
                        (products/services)
              required:
                - name
      responses:
        '200':
          description: Alternative created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  _metadata:
                    $ref: '#/components/schemas/Metadata'
                  data:
                    type: object
                    properties:
                      oId:
                        type: string
                      createdAt:
                        type: string
                        nullable: true
                      updatedAt:
                        type: string
                        nullable: true
                      deletedAt:
                        type: string
                        nullable: true
                      archivedAt:
                        type: string
                        nullable: true
                      name:
                        type: string
                      internalName:
                        type: string
                      description:
                        type: string
                      active:
                        type: boolean
                        default: true
                      data:
                        type: object
                        nullable: true
                        properties:
                          whereItWorks:
                            type: array
                            items:
                              type: string
                          whereItBreaks:
                            type: array
                            items:
                              type: string
                          whoChampionsThisApproach:
                            type: array
                            items:
                              type: string
                          whyOurApproachIsSuperior:
                            type: array
                            items:
                              type: string
                          perceivedBenefits:
                            type: array
                            items:
                              type: string
                          hiddenCostsAndPitfalls:
                            type: array
                            items:
                              type: string
                          customFields:
                            $ref: '#/components/schemas/CustomDataFields'
                        required:
                          - whereItWorks
                          - whereItBreaks
                          - whoChampionsThisApproach
                          - whyOurApproachIsSuperior
                          - perceivedBenefits
                          - hiddenCostsAndPitfalls
                      user:
                        type: object
                        nullable: true
                        properties:
                          oId:
                            type: string
                            nullable: true
                          firstName:
                            type: string
                            nullable: true
                            description: >-
                              The first name of the user who created the
                              alternative
                            example: John
                          lastName:
                            type: string
                            nullable: true
                            description: >-
                              The last name of the user who created the
                              alternative
                            example: Doe
                      workspace:
                        type: object
                        nullable: true
                        properties:
                          oId:
                            type: string
                            nullable: true
                    required:
                      - oId
                      - createdAt
                      - updatedAt
                      - name
                      - internalName
                      - description
                required:
                  - _metadata
                  - data
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  _metadata:
                    $ref: '#/components/schemas/Metadata'
                  message:
                    type: string
                required:
                  - _metadata
                  - message
        '404':
          description: Offering not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  _metadata:
                    $ref: '#/components/schemas/Metadata'
                  message:
                    type: string
                required:
                  - _metadata
                  - message
      deprecated: false
components:
  schemas:
    CustomDataFields:
      type: array
      items:
        $ref: '#/components/schemas/CustomDataFieldItem'
    LinkingStrategy:
      oneOf:
        - $ref: '#/components/schemas/LinkingStrategyAll'
        - $ref: '#/components/schemas/LinkingStrategySpecific'
      discriminator:
        propertyName: mode
        mapping:
          ALL:
            $ref: '#/components/schemas/LinkingStrategyAll'
          SPECIFIC:
            $ref: '#/components/schemas/LinkingStrategySpecific'
      default:
        mode: ALL
      description: Strategy for linking this persona to offerings (products/services)
    Metadata:
      type: object
      properties:
        usage:
          type: number
          default: 0
          description: API usage
          example: 0
        requestId:
          type: string
          description: Request ID
          example: requestId
        message:
          type: string
          description: Message
          example: message
        timestamp:
          type: string
          description: Timestamp
          example: '2021-01-01T00:00:00.000Z'
      required:
        - requestId
        - timestamp
    CustomDataFieldItem:
      type: object
      properties:
        title:
          type: string
        value:
          type: array
          items:
            type: string
      required:
        - title
        - value
    LinkingStrategyAll:
      type: object
      properties:
        mode:
          type: string
          enum:
            - ALL
          description: >-
            Link to all active offerings in the workspace (products, services,
            and solutions)
          example: ALL
      required:
        - mode
    LinkingStrategySpecific:
      type: object
      properties:
        mode:
          type: string
          enum:
            - SPECIFIC
          description: >-
            Link to specific offerings by their IDs (products, services, and
            solutions)
          example: SPECIFIC
        offeringOIds:
          type: array
          items:
            type: string
            minLength: 1
          minItems: 1
          description: >-
            Array of offering IDs to link to (supports product, service, and
            solution oIds)
          example:
            - px_123
            - sc_456
            - sv_789
      required:
        - mode
        - offeringOIds
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key

````