> ## 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 Asset Share

> Create an email-verified share link for an asset. Allowlist by exact emails and/or whole domains — provide at least one entry across the two. Set expiresInDays (1–3650) or null for a link that never expires. The returned url embeds the link token; it stays readable via List Asset Shares, so it can be copied again later.



## OpenAPI

````yaml post /api/v2/asset/shares/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/asset/shares/create:
    post:
      tags:
        - Asset
      summary: Create Asset Share
      description: >-
        Create an email-verified share link for an asset. Allowlist by exact
        emails and/or whole domains — provide at least one entry across the two.
        Set expiresInDays (1–3650) or null for a link that never expires. The
        returned url embeds the link token; it stays readable via List Asset
        Shares, so it can be copied again later.
      operationId: createShare
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                uuid:
                  type: string
                  description: >-
                    UUID of the asset to share. e.g.
                    '4f1e2a90-8b3d-4c21-9e07-2a1b3c4d5e6f'
                expiresInDays:
                  type: integer
                  nullable: true
                  minimum: 1
                  maximum: 3650
                  description: >-
                    Days until the link expires, 1–3650; or null for never. e.g.
                    30
                emails:
                  type: array
                  items:
                    type: string
                  description: >-
                    Exact recipient emails to allow. Provide emails and/or
                    domains — at least one across the two is required. e.g.
                    ['sam@acme.com']
                domains:
                  type: array
                  items:
                    type: string
                  description: >-
                    Domains to allow (any verified mailbox at the domain).
                    Provide emails and/or domains — at least one across the two
                    is required. e.g. ['acme.com']
              required:
                - uuid
                - expiresInDays
      responses:
        '200':
          description: Asset share created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  _metadata:
                    $ref: '#/components/schemas/Metadata'
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                        description: >-
                          Share link UUID — the id used by asset_share_* tools.
                          e.g. 'a1b2c3d4-5e6f-7081-92a3-b4c5d6e7f809'
                      url:
                        type: string
                        description: >-
                          The share URL embedding the link token. Always present
                          here, and re-readable later via asset_shares_list.
                          e.g. 'https://sites.octave.app/s/eyJ...'
                      access:
                        type: string
                        enum:
                          - allowlist
                          - anyone
                        description: >-
                          The link's gate. 'allowlist' (the default) makes a
                          viewer prove an allowlisted email — or a mailbox at an
                          allowlisted domain — with a one-time code, and
                          attributes the visit to them. 'anyone' means holding
                          the link IS the credential: no check, and the visit is
                          counted but attributed to nobody. e.g. 'allowlist'
                      expiresAt:
                        type: string
                        nullable: true
                        description: >-
                          ISO-8601 expiry; null means it never expires. e.g.
                          '2026-08-06T00:00:00.000Z'
                      emails:
                        type: array
                        items:
                          type: string
                        description: >-
                          Allowlisted exact recipient emails. e.g.
                          ['sam@acme.com']
                      domains:
                        type: array
                        items:
                          type: string
                        description: >-
                          Allowlisted domains — any verified mailbox at these
                          gets access. e.g. ['acme.com']
                      createdAt:
                        type: string
                        description: >-
                          ISO-8601 creation time. e.g.
                          '2026-07-06T09:00:00.000Z'
                    required:
                      - uuid
                      - url
                      - access
                      - expiresAt
                      - emails
                      - domains
                      - createdAt
                required:
                  - _metadata
                  - data
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  _metadata:
                    $ref: '#/components/schemas/Metadata'
                required:
                  - _metadata
      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
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key

````