# Retrieve a cycle on a subscription

Returns a single cycle that belongs to the given subscription. A cycle that doesn't exist — or that belongs to a different account — returns `404 Not Found`.
**Required scope:** subscription:read

Endpoint: GET /subscription/{id}/cycle/{cycle_id}
Version: 2.0
Security: accountId, apiKey

## Security:

  - `accountId` (unknown)
    apiKey in header AccountId

  - `apiKey` (unknown)
    apiKey in header ApiKey

## Path parameters:

  - `id` (string, required)
    UUID of the subscription the cycle belongs to.

  - `cycle_id` (string, required)
    UUID of the cycle to retrieve.

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `id` (string, required)
    The cycle's unique identifier.
    Example: 550e8400-e29b-41d4-a716-446655440000

  - `type` (string, required)
    How the cycle was created:
* `RENEWABLE` — part of the recurring schedule.
* `ONE_TIME_CHARGE` — an ad-hoc capture added on top of the schedule.
* `CAPTURE_NOW` — an immediate one-off capture.
    Enum: "RENEWABLE", "ONE_TIME_CHARGE", "CAPTURE_NOW"

  - `status` (string, required)
    The current state of the cycle:
* `PENDING` — queued, waiting for its scheduled time.
* `PROCESSING` — capture is being executed right now.
* `WAITING` — waiting on an external dependency (e.g. customer action).
* `SUCCESS` — captured successfully.
* `FAILED` — capture failed and will not be retried.
* `RETRY` — capture failed but is queued for another attempt.
* `FAILOVER` — switched to the failover method after the primary failed.
* `DELETED` — cancelled before being captured.
    Enum: "PENDING", "PROCESSING", "WAITING", "SUCCESS", "FAILED", "RETRY", "FAILOVER", "DELETED"

  - `value` (number, required)
    The amount captured, in euros.
    Example: 10.5

  - `capture_at` (string, required)
    When the capture is scheduled to run, in UTC (RFC 3339).
    Example: 2026-05-22T09:00:00Z

  - `description` (string)
    Free-form text shown on the bank statement or in the MB WAY app. Omitted when not set.
    Example: monthly charge

  - `key` (string)
    Your internal identifier for the cycle. Omitted when not set.
    Example: my-key

## Response 400:

  - `400` (unknown)
    Bad Request

## Response 400 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 403:

  - `403` (unknown)
    Forbidden

## Response 403 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 403 fields (application/xml):

  - `message` (array)

## Response 404:

  - `404` (unknown)
    Not Found

## Response 404 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 412:

  - `412` (unknown)
    Pre condition failed

## Response 412 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 429:

  - `429` (unknown)
    Too Many Requests

## Response 429 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 500:

  - `500` (unknown)
    Internal Server Error

## Response 500 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 200 examples:

  - `A one-off cycle that has not been captured yet` (unknown)

  - `A regular renewal cycle that has been captured` (unknown)

## Response 401 examples:

  - `Wrong credentials provided` (unknown)

## Response 403 examples:

  - `Wrong credentials provided` (unknown)

## Response 404 examples:

  - `Resource not found` (unknown)

## Response 412 examples:

  - `Domain constraint failed` (unknown)

## Response 429 examples:

  - `Rate limit exceeded` (unknown)

## Response 500 examples:

  - `Internal error` (unknown)

