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

# Retry a failed deposit by id

> Re-drive one failed deposit through the settlement flow, addressing it by the stable id returned by `GET /deposits`. Authenticate with an `x-api-key` (write scope) or a Bearer platform token. Scoped to the caller's tenant: an unknown id and another tenant's id are both a 404. The deposit must be `failed` or `rejected`; operator-only states (`ignored`, `delayed`) are retryable through the admin endpoint only. Unlike `POST /deposits/retry`, the error code the deposit failed with does not gate the retry. Optionally pin the settlement layer — EVM only, refused for a Solana or HyperCore deposit rather than silently ignored. Omit the body entirely to retry without pinning a layer. Tron deposits are not retryable. A HyperCore deposit whose first leg already completed is refused with a 409. A 200 means the retry was accepted and re-driven, not that it settled.



## OpenAPI

````yaml https://raw.githubusercontent.com/rhinestonewtf/openapi/refs/heads/main/deposit-service.json post /deposits/{id}/retry
openapi: 3.1.0
info:
  title: Deposit Service API
  version: 1.0.0
  description: >-
    Cross-chain deposit processing service with automatic token bridging and gas
    sponsorship
servers:
  - url: https://v1.orchestrator.rhinestone.dev/deposit-processor
security: []
paths:
  /deposits/{id}/retry:
    post:
      tags:
        - Processing
      summary: Retry a failed deposit by id
      description: >-
        Re-drive one failed deposit through the settlement flow, addressing it
        by the stable id returned by `GET /deposits`. Authenticate with an
        `x-api-key` (write scope) or a Bearer platform token. Scoped to the
        caller's tenant: an unknown id and another tenant's id are both a 404.
        The deposit must be `failed` or `rejected`; operator-only states
        (`ignored`, `delayed`) are retryable through the admin endpoint only.
        Unlike `POST /deposits/retry`, the error code the deposit failed with
        does not gate the retry. Optionally pin the settlement layer — EVM only,
        refused for a Solana or HyperCore deposit rather than silently ignored.
        Omit the body entirely to retry without pinning a layer. Tron deposits
        are not retryable. A HyperCore deposit whose first leg already completed
        is refused with a 409. A 200 means the retry was accepted and re-driven,
        not that it settled.
      parameters:
        - schema:
            type: string
            pattern: ^\d+$
            description: Deposit id. Returned by GET /deposits.
            example: '12345'
          required: true
          description: Deposit id. Returned by GET /deposits.
          name: id
          in: path
        - schema:
            type: string
            description: API key for authentication (omit when sending Authorization)
            example: your-api-key
          required: false
          description: API key for authentication (omit when sending Authorization)
          name: x-api-key
          in: header
        - schema:
            type: string
            description: >-
              Bearer platform token (e.g. forwarded by user-service). Takes
              precedence over `x-api-key` when both are present.
            example: Bearer eyJhbGciOi...
          required: false
          description: >-
            Bearer platform token (e.g. forwarded by user-service). Takes
            precedence over `x-api-key` when both are present.
          name: authorization
          in: header
        - schema:
            type: string
            pattern: ^\d{4}-\d{2}\.[a-z0-9]+$
            description: >-
              API version identifier (e.g. "2026-04.amazon"). Optional today,
              will become required in a future release.
            example: 2026-04.amazon
          required: false
          description: >-
            API version identifier (e.g. "2026-04.amazon"). Optional today, will
            become required in a future release.
          name: x-api-version
          in: header
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetryDepositByIdRequestBody'
      responses:
        '200':
          description: Deposit retry initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetryDepositByIdResponse'
        '400':
          description: >-
            Deposit not in a retryable state, a Tron deposit, settlement-layer
            override given for a non-EVM deposit, or the Solana deposit has no
            output-token route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Unauthorized - API key lacks write scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Deposit not found or not owned by the caller
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            HyperCore leg 1 already completed (Core funds swept to HyperEVM) — a
            leg-2 refund/fill concern, not a leg-1 retry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    RetryDepositByIdRequestBody:
      type: object
      properties:
        settlementLayer:
          type: string
          minLength: 1
          description: >-
            Optional settlement-layer override for the re-drive (e.g. "ACROSS",
            "RELAY"). EVM deposits only; rejected for Solana. Omit to let the
            orchestrator pick.
          example: RELAY
    RetryDepositByIdResponse:
      type: object
      properties:
        message:
          type: string
        status:
          type: string
          enum:
            - pending
            - processing
            - completed
            - failed
            - rejected
            - ignored
            - expecting_refund
            - refunded
            - delayed
            - reconciliation_required
      required:
        - message
        - status
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        details:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              path:
                type: array
                items:
                  anyOf:
                    - type: string
                    - type: number
              code:
                type: string
            required:
              - message
      required:
        - error

````