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

# List recovery actions



## OpenAPI

````yaml api.yaml GET /v1/recovery_actions
openapi: 3.0.1
info:
  title: ingest/v1/ingest.proto
  version: version not set
  description: API for ingesting billing data into Slicker
servers:
  - url: https://api.slickerhq.com/ingest
security:
  - bearerAuth: []
tags:
  - name: IngestService
    description: Services for ingesting billing data into Slicker
paths:
  /v1/recovery_actions:
    get:
      tags:
        - IngestService
      summary: List available recovery actions
      description: >
        Retrieve a paginated list of recommended recovery actions for failed
        payments.

        Can be filtered by subscription ID, invoice ID, or transaction ID.

        Results can be ordered by creation time or scheduled time.

        Supports pagination with configurable page sizes.

        Requires authentication with a valid API key passed as a Bearer token.
      operationId: IngestService_ListRecoveryActions
      parameters:
        - name: pageSize
          in: query
          description: Number of recovery actions to return per page (maximum 100)
          required: false
          schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 100
            default: 20
          example: 20
        - name: pageToken
          in: query
          description: Token for retrieving the next page of results
          required: false
          schema:
            type: string
          example: eyJjdXJzb3IiOiIyMDIzLTAxLTE1VDE0OjIwOjAwWiJ9
        - name: subscriptionId
          in: query
          description: Filter recovery actions by subscription identifier
          example: sub_12345678
          schema:
            type: string
        - name: invoiceId
          in: query
          description: Filter recovery actions by invoice identifier
          example: inv_12345678
          schema:
            type: string
        - name: transactionId
          in: query
          description: Filter recovery actions by transaction identifier
          example: txn_12345678
          schema:
            type: string
        - name: orderBy
          in: query
          description: Field to order the results by
          required: false
          schema:
            type: string
            enum:
              - RECOVERY_ACTION_ORDER_BY_CREATED_AT
              - RECOVERY_ACTION_ORDER_BY_IDEAL_RETRY_TIME
            default: RECOVERY_ACTION_ORDER_BY_IDEAL_RETRY_TIME
          example: RECOVERY_ACTION_ORDER_BY_CREATED_AT
        - name: orderDirection
          in: query
          description: Direction to order the results
          required: false
          schema:
            type: string
            enum:
              - RECOVERY_ACTION_ORDER_DIRECTION_ASC
              - RECOVERY_ACTION_ORDER_DIRECTION_DESC
            default: RECOVERY_ACTION_ORDER_DIRECTION_ASC
          example: RECOVERY_ACTION_ORDER_DIRECTION_DESC
      responses:
        '200':
          description: A successful response with list of recovery actions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListRecoveryActionsResponse'
              example:
                recoveryActions:
                  - requestId: req_2uqkAo1bwllmzrgV2qtGv48DtGI
                    invoiceId: inv_12345678
                    subscriptionId: sub_12345678
                    transactionId: txn_87654321
                    actionSuggestion: ACTION_SUGGESTION_RETRY
                    idealRetryTime: '2023-01-18T09:30:00Z'
                    createdAt: '2023-01-15T14:20:00Z'
                  - requestId: req_3vrlBp2cwmmn0sH3qruHw59EuHJ
                    invoiceId: inv_87654321
                    subscriptionId: sub_87654321
                    transactionId: txn_12345678
                    actionSuggestion: ACTION_SUGGESTION_CARD_CHANGE
                    idealRetryTime: '2023-01-21T15:45:00Z'
                    createdAt: '2023-01-20T10:30:00Z'
                nextPageToken: '123'
                totalSize: 150
        '400':
          description: Bad Request - The request contains invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              example:
                code: 400
                message: 'Invalid request: must provide at least one filter parameter'
                details: []
        '401':
          description: Unauthorized - Authentication credentials are missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              example:
                code: 401
                message: 'Unauthorized: missing or invalid API key in Bearer token'
                details: []
        '403':
          description: >-
            Forbidden - The authenticated user doesn't have permission to access
            this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              example:
                code: 403
                message: 'Forbidden: insufficient permissions to list recovery actions'
                details: []
        '404':
          description: Not Found - No recovery actions found for the specified criteria.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              example:
                code: 404
                message: No recovery actions found for the specified criteria
                details: []
        '429':
          description: Too Many Requests - The rate limit has been exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              example:
                code: 429
                message: 'Rate limit exceeded: try again later'
                details: []
        '500':
          description: Internal Server Error - An unexpected server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              example:
                code: 500
                message: Internal server error
                details: []
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      security:
        - bearerAuth: []
components:
  schemas:
    ListRecoveryActionsResponse:
      type: object
      description: >-
        Response containing a list of recommended recovery actions with
        pagination support
      properties:
        recoveryActions:
          type: array
          description: >-
            List of recovery actions recommended by Slicker's optimization
            algorithms
          items:
            $ref: '#/components/schemas/RecoveryAction'
        nextPageToken:
          type: string
          description: >-
            Token for retrieving the next page of results. Empty if no more
            results.
          example: '123'
        totalSize:
          type: integer
          format: int32
          description: Total number of recovery actions available across all pages
          example: 150
    rpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/protobufAny'
    RecoveryAction:
      type: object
      description: A recommended action to recover a failed payment
      properties:
        requestId:
          type: string
          description: Unique identifier for this recovery action recommendation
          example: req_2uqkAo1bwllmzrgV2qtGv48DtGI
        invoiceId:
          type: string
          description: Identifier for the invoice that should be retried
          example: inv_12345678
        subscriptionId:
          type: string
          description: Identifier for the subscription associated with the invoice
          example: sub_12345678
        transactionId:
          type: string
          description: Identifier for the failed transaction
          example: txn_87654321
        actionSuggestion:
          $ref: '#/components/schemas/ActionSuggestion'
          description: Suggested action to take for this recovery attempt
          example: ACTION_SUGGESTION_RETRY
        idealRetryTime:
          type: string
          format: date-time
          description: >-
            The optimal time to execute the retry according to Slicker's
            algorithms
          example: '2023-01-18T09:30:00Z'
        createdAt:
          type: string
          format: date-time
          description: Timestamp when this recovery action was created
          example: '2023-01-15T14:20:00Z'
      required:
        - requestId
        - invoiceId
        - actionSuggestion
        - idealRetryTime
    protobufAny:
      type: object
      properties:
        '@type':
          type: string
      additionalProperties:
        type: object
    ActionSuggestion:
      type: string
      default: ACTION_SUGGESTION_UNSPECIFIED
      enum:
        - ACTION_SUGGESTION_UNSPECIFIED
        - ACTION_SUGGESTION_RETRY
        - ACTION_SUGGESTION_CARD_CHANGE
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: |
        API key authentication using a Bearer token in the Authorization header.
        Example: `Authorization: Bearer YOUR_API_KEY`

````