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

# Submit Phoenix onboarding

> Requires key scopes `send` and `phoenix/onboard`.

Runs the same checks as `POST /transactions/send` on a signed `phoenix/onboard` build. The transaction must invoke only the Phoenix program. The API then hands it to Phoenix, which co-signs and sends it. `status` is `unknown` when the Phoenix request failed in flight, timed out after 15 seconds, returned an unreadable reply, or named a different signature. Poll the receipt in that case. When Phoenix returns an error reply, the API returns 502 and no receipt.



## OpenAPI

````yaml /api-reference/openapi.json post /transactions/phoenix/onboard/submit
openapi: 3.1.0
info:
  title: Hedgin manager bot API
  version: 1.0.0
  description: >-
    Versioned HTTP API for approved manager bots. Reads vault state and builds
    unsigned Solana transactions. The bot signs locally with the vault's current
    authority key. Runs only on Solana mainnet-beta.
servers:
  - url: https://hedgin.xyz/api/external/v1
    description: Production (Solana mainnet-beta)
security:
  - bearerAuth: []
tags:
  - name: Vault reads
  - name: Market reads
  - name: Jupiter transactions
  - name: Meteora DLMM transactions
  - name: Phoenix transactions
  - name: Vault and strategy transactions
  - name: Send and status
paths:
  /transactions/phoenix/onboard/submit:
    post:
      tags:
        - Send and status
      summary: Submit Phoenix onboarding
      description: >-
        Requires key scopes `send` and `phoenix/onboard`.


        Runs the same checks as `POST /transactions/send` on a signed
        `phoenix/onboard` build. The transaction must invoke only the Phoenix
        program. The API then hands it to Phoenix, which co-signs and sends it.
        `status` is `unknown` when the Phoenix request failed in flight, timed
        out after 15 seconds, returned an unreadable reply, or named a different
        signature. Poll the receipt in that case. When Phoenix returns an error
        reply, the API returns 502 and no receipt.
      operationId: submitPhoenixOnboard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendRequest'
            example:
              transaction: AQABAg...
              ticket: eyJraW5kIjoiYnVpbGQi....mac
      responses:
        '200':
          description: Phoenix accepted the transaction or the outcome is unknown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '413':
          $ref: '#/components/responses/PayloadTooLarge'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/BadGateway'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    SendRequest:
      type: object
      additionalProperties: false
      required:
        - transaction
        - ticket
      properties:
        transaction:
          type: string
          format: byte
          maxLength: 3000
          description: >-
            The built transaction after the manager signed it, base64. The
            message must be byte-for-byte the one the build returned.
        ticket:
          type: string
          maxLength: 5000
          description: The `ticket` from the same build step.
    SendResponse:
      type: object
      required:
        - signature
        - receipt
        - status
      properties:
        signature:
          type: string
          description: Base58 transaction signature (the manager's fee-payer signature).
        receipt:
          type: string
          description: >-
            Status receipt for `GET /transactions/status`. Valid for 24 hours
            and only for the key that sent it.
        status:
          type: string
          enum:
            - pending
            - unknown
          description: >-
            `pending`: the relay accepted the transaction. `unknown`: the
            outcome is ambiguous and the transaction may have landed. Neither
            value means confirmed.
    Error:
      type: object
      description: >-
        Every error response uses this envelope. Responses with status 500, 502,
        or 503 always carry the message `Service temporarily unavailable`.
        Responses with status 422 always carry the message `Transaction rejected
        during simulation or preflight`. In both cases `code` still names the
        cause.
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: >-
                Stable machine-readable code, such as `Validation`, `Forbidden`,
                or a decoded program error name.
              example: Validation
            message:
              type: string
              description: Human-readable detail. Never contains provider logs.
              example: vault must be a public key
  responses:
    BadRequest:
      description: >-
        Invalid path, query, or body. Builder messages name the field, such as
        `amount: must be a non-negative integer string`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: Validation
              message: vault must be a public key
    Unauthorized:
      description: Missing, malformed, unknown, revoked, or expired API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: Unauthorized
              message: Invalid API key
    Forbidden:
      description: >-
        The key lacks the required scope, the vault is outside the key's
        allowlist, or the key's manager is not the vault's current on-chain
        authority.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: Forbidden
              message: Action is not enabled for this key
    NotFound:
      description: Unknown route, or the vault, mint, pool, or strategy does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: NotFound
              message: Vault not found
    PayloadTooLarge:
      description: Request body larger than 16,384 bytes.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: BodyTooLarge
              message: Request body is too large
    TooManyRequests:
      description: A rate limit is exhausted.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RateLimited
              message: Too many requests, slow down
    InternalError:
      description: >-
        Internal error, including a builder that returned an invalid transaction
        (`BuildFailed`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: Internal
              message: Service temporarily unavailable
    BadGateway:
      description: An upstream provider (Jupiter, Meteora, or Phoenix) failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: JupiterQuoteFailed
              message: Service temporarily unavailable
    ServiceUnavailable:
      description: RPC, key store, or service configuration unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RpcUnavailable
              message: Service temporarily unavailable
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: hv1_<id>_<secret>
      description: >-
        API key issued by a Hedgin administrator, in the form
        `hv1_<id>_<secret>`. `<id>` is 1 to 48 characters and `<secret>` is 32
        to 128 characters, both from `[A-Za-z0-9_-]`.

````

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