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

# Perform an authorized offchain account action

> Strict kind-discriminated action. Requires account bearer, Origin and X-VM2-Wallet on the direct backend. The first-party browser proxy carries its HttpOnly session. Response depends on action: releases -> ReleaseResponse; pack-edit -> PackEditSnapshot; chat/dm -> {line}; dm-seen -> {ok}; follow -> FollowSummary; access -> {member}; profile/X -> profile results; safety/report -> safety results. JSON <=512 KiB. Unknown fields rejected; no action spends tokens or makes blockchain transactions.



## OpenAPI

````yaml /api-reference/vibemarket_openapi.json post /account
openapi: 3.0.3
info:
  title: vibe.market API
  version: '2026-09-10'
  description: >-
    Consumer HTTP API for the current vibe.market at
    https://vibechain.com/market. This is an experimental protocol; review
    https://vibechain.com/terms. Public reads do not require Classic API keys.
    Discover runtime graphs rather than hardcoding a revision. The
    /api/vibemarket2 namespace is intentional. Operational provider webhooks and
    operator-only controls are excluded.
  termsOfService: https://vibechain.com/terms
servers:
  - url: https://build.vibechain.com/api/vibemarket2
    description: Current-market backend
security: []
tags:
  - name: Discovery
  - name: Indexed market
  - name: Board
  - name: Live updates
  - name: Creators
  - name: Artwork
  - name: Accounts
  - name: Community
  - name: Private messages
  - name: Scoped sessions
paths:
  /account:
    post:
      tags:
        - Accounts
      summary: Perform an authorized offchain account action
      description: >-
        Strict kind-discriminated action. Requires account bearer, Origin and
        X-VM2-Wallet on the direct backend. The first-party browser proxy
        carries its HttpOnly session. Response depends on action: releases ->
        ReleaseResponse; pack-edit -> PackEditSnapshot; chat/dm -> {line};
        dm-seen -> {ok}; follow -> FollowSummary; access -> {member}; profile/X
        -> profile results; safety/report -> safety results. JSON <=512 KiB.
        Unknown fields rejected; no action spends tokens or makes blockchain
        transactions.
      operationId: vm2037
      parameters:
        - name: Origin
          in: header
          required: true
          schema:
            type: string
            enum:
              - https://vibechain.com
              - https://www.vibechain.com
              - https://vibe.market
              - https://www.vibe.market
          description: Must match the approved origin in the signed consent.
        - name: X-VM2-Wallet
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Address'
          description: Must match the account session wallet.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountAction'
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        '400':
          description: Invalid input, signature or action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Session missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Origin, wallet or action not authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Safety/account-deletion generation conflict.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Body too large.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate/admission limit. Honor Retry-After if present.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Dependency or capacity unavailable. Retry with backoff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - AccountSession: []
components:
  schemas:
    Address:
      type: string
      pattern: ^0x[0-9a-fA-F]{40}$
    AccountAction:
      oneOf:
        - type: object
          properties:
            kind:
              type: string
              enum:
                - releases
            action:
              $ref: '#/components/schemas/ReleaseAction'
          required:
            - kind
            - action
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - pack-edit
            version:
              type: string
              maxLength: 100
              minLength: 1
            nonce:
              type: string
              format: uuid
              description: Fresh UUID v4, never reused.
            edit:
              $ref: '#/components/schemas/PackEdit'
          required:
            - kind
            - version
            - nonce
            - edit
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - chat
            text:
              type: string
              maxLength: 240
          required:
            - kind
            - text
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - dm
            to:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
            text:
              type: string
              maxLength: 240
          required:
            - kind
            - to
            - text
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - dm-seen
            with:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
          required:
            - kind
            - with
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - follow
            address:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
            followed:
              type: boolean
          required:
            - kind
            - address
            - followed
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - access
            code:
              type: string
              maxLength: 32
          required:
            - kind
            - code
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - profile
            profile:
              type: object
              properties:
                username:
                  type: string
                  maxLength: 21
                avatarUrl:
                  type: string
                  nullable: true
                  maxLength: 2048
              additionalProperties: false
          required:
            - kind
            - profile
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - connect-x
            postUrl:
              type: string
              maxLength: 2048
            xUsername:
              type: string
              maxLength: 16
          required:
            - kind
            - postUrl
            - xUsername
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - safety-preference
            field:
              type: string
              enum:
                - hiddenPacks
                - hiddenAccounts
                - blockedAccounts
            target:
              type: string
              maxLength: 200
            enabled:
              type: boolean
          required:
            - kind
            - field
            - target
            - enabled
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - report
            target:
              $ref: '#/components/schemas/SafetyTarget'
            reason:
              type: string
              enum:
                - harassment
                - sexual-content
                - hate-or-violence
                - scam
                - copyright
                - other
            details:
              type: string
              maxLength: 2000
            nonce:
              type: string
              format: uuid
              description: Fresh UUID v4, never reused.
          required:
            - kind
            - target
            - reason
            - details
            - nonce
          additionalProperties: false
      description: >-
        Strict discriminated offchain action. Unknown keys are rejected. This
        endpoint cannot authorize blockchain transactions.
    Error:
      type: object
      properties:
        error:
          type: string
      required:
        - error
    ReleaseAction:
      oneOf:
        - type: object
          properties:
            kind:
              type: string
              enum:
                - mine
          required:
            - kind
        - type: object
          properties:
            kind:
              type: string
              enum:
                - load
            id:
              type: string
          required:
            - kind
            - id
        - type: object
          properties:
            kind:
              type: string
              enum:
                - save
                - publish
            release:
              $ref: '#/components/schemas/ReleaseInput'
          required:
            - kind
            - release
        - type: object
          properties:
            kind:
              type: string
              enum:
                - wishlist
            id:
              type: string
            wished:
              type: boolean
          required:
            - kind
            - id
            - wished
    PackEdit:
      type: object
      properties:
        version:
          type: string
          pattern: ^[A-Za-z0-9-]{1,80}$
        dropId:
          type: string
          pattern: ^[1-9][0-9]{0,77}$
        launchTx:
          type: string
          pattern: ^0x[a-f0-9]{64}$
        revision:
          type: integer
          minimum: 0
        cardsByRarity:
          $ref: '#/components/schemas/CardsByRarity'
        image:
          type: string
          maxLength: 512
      required:
        - version
        - dropId
        - launchTx
        - revision
      description: >-
        At least image or cardsByRarity is required. Card edits are limited to
        seven days; cover edits have no equivalent time restriction.
    SafetyTarget:
      type: object
      properties:
        kind:
          type: string
          enum:
            - account
            - pack
            - message
        id:
          type: string
          maxLength: 200
      required:
        - kind
        - id
    ReleaseInput:
      type: object
      properties:
        id:
          type: string
          pattern: ^[a-zA-Z0-9-]{1,64}$
        revision:
          type: integer
          minimum: 0
        name:
          type: string
          maxLength: 64
        symbol:
          type: string
          maxLength: 16
        image:
          type: string
          maxLength: 512
        color:
          type: string
          pattern: ^#[0-9a-fA-F]{6}$
        baseURI:
          type: string
          maxLength: 512
        description:
          type: string
          maxLength: 280
        links:
          type: object
          properties:
            website:
              type: string
            x:
              type: string
            telegram:
              type: string
        design:
          $ref: '#/components/schemas/PackDesign'
        launchAt:
          type: integer
          format: int64
          nullable: true
          minimum: 0
        status:
          type: string
          enum:
            - draft
            - announced
      required:
        - id
        - revision
        - name
        - symbol
        - image
        - color
        - baseURI
        - description
        - launchAt
        - status
      description: >-
        Announced releases require a nonempty name, uppercase alphanumeric
        symbol and non-null launchAt. load a full draft before saving if
        cardsOmitted is true.
    CardsByRarity:
      type: array
      minItems: 5
      maxItems: 5
      items:
        type: array
        maxItems: 50
        items:
          $ref: '#/components/schemas/CardDefinition'
    PackDesign:
      type: object
      properties:
        accent:
          type: string
          pattern: ^#[0-9a-fA-F]{6}$
        pattern:
          type: string
          enum:
            - solid
            - split
            - fade
            - stripes
        mask:
          type: string
          enum:
            - full
            - frame
            - art
            - paint
        cardsByRarity:
          $ref: '#/components/schemas/CardsByRarity'
        strokes:
          type: array
          maxItems: 12
          items:
            type: array
            minItems: 4
            maxItems: 80
            items:
              type: number
            description: >-
              Alternating x/y coordinates bounded by the design parser to
              x=0..300, y=0..420.
        tierImages:
          type: array
          items:
            type: string
        cardImage:
          type: string
        tierMasks:
          type: array
          items:
            type: string
      description: >-
        Normalized creator design. Use the shared parser for exact
        canonicalization before standalone signing.
    CardDefinition:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 64
        description:
          type: string
          maxLength: 280
        image:
          type: string
          maxLength: 512
        mask:
          type: string
        firstEditionImage:
          type: string
          maxLength: 512
        attributes:
          type: array
          maxItems: 12
          items:
            type: object
            properties:
              trait_type:
                type: string
                maxLength: 32
              value:
                oneOf:
                  - type: string
                    maxLength: 128
                  - type: number
            required:
              - trait_type
              - value
      required:
        - id
        - name
        - description
        - image
        - attributes
      description: >-
        Do not override protocol-owned rarity, foil, wear or identity
        attributes.
  securitySchemes:
    AccountSession:
      type: http
      scheme: bearer
      bearerFormat: 64-character lowercase hexadecimal token
      description: >-
        Origin-bound account token. Also send Origin and X-VM2-Wallet.
        First-party website proxies use the HttpOnly vm2-session cookie;
        arbitrary third-party origins are not supported.

````