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

# Get Plan Usage

> Check your current plan, credit balances, and limits before submitting projects

> **For AI agents:** a documentation index is at [/llms.txt](/llms.txt). Every page is also available as markdown, just append `.md` to the URL.

## Overview

Get your studio's current plan and credit usage. Use this to check remaining credits **before** submitting a project instead of parsing rejection errors — especially useful for agents and automated pipelines that batch work.

## Response

<ResponseField name="plan" type="string">
  User-friendly plan label, e.g. `"Studio (Monthly)"` or your AppSumo tier name
</ResponseField>

<ResponseField name="mediaCredits" type="object">
  Media credit pool (clipping, captions, reframing, transcription, audiograms, editor processing)

  <Expandable title="Credit Pool">
    <ResponseField name="total" type="integer">
      Effective spendable cap. Includes active top-up credits, so this can be higher than your plan's base allowance.
    </ResponseField>

    <ResponseField name="used" type="integer">
      Credits consumed this billing cycle. Can exceed `total` if overage occurred.
    </ResponseField>

    <ResponseField name="remaining" type="integer">
      `max(0, total - used)` — never negative.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="aiCredits" type="object">
  AI credit pool (dubbing, AI voiceovers, emoji highlighter). Same `{total, used, remaining}` shape.
</ResponseField>

<ResponseField name="maxConcurrentProjects" type="integer">
  How many automation projects can process at once on your plan (Creator: 3, Studio: 10)
</ResponseField>

<ResponseField name="projectRetentionDays" type="integer">
  How long completed projects are kept before they expire
</ResponseField>

<ResponseField name="resetsOn" type="integer">
  Unix timestamp when the usage counters reset (your next billing cycle)
</ResponseField>

## Credit Costs

Credits are consumed per billed minute of video. The multipliers by project type:

| Project type      | Cost                         |
| ----------------- | ---------------------------- |
| Clipping          | 1 media credit / minute      |
| Captions          | 1 media credit / minute      |
| Transcription     | 1 media credit / minute      |
| Audiogram         | 1 media credit / minute      |
| Reframe           | **2 media credits / minute** |
| Editor processing | **2 media credits / minute** |
| Dubbing           | **0.5 AI credits / minute**  |

See the [Reap Credit System guide](/help-center/reap-credit-system-complete-guide) for details and examples.

<Note>
  If your plan was purchased through AppSumo, `remaining` may temporarily overstate spendable credits during the first 31 days after purchase (a refund-window safeguard). If a submission is rejected despite showing remaining credits, contact support.
</Note>

## Example Request

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X GET "https://public.reap.video/api/v1/automation/get-plan-usage" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={"system"}
  const response = await fetch('https://public.reap.video/api/v1/automation/get-plan-usage', {
    headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
  });

  const usage = await response.json();
  if (usage.mediaCredits.remaining < 30) {
    console.log('Low on media credits — top up before submitting');
  }
  ```

  ```python Python theme={"system"}
  import requests

  response = requests.get(
      'https://public.reap.video/api/v1/automation/get-plan-usage',
      headers={'Authorization': 'Bearer YOUR_API_KEY'}
  )

  usage = response.json()
  print(f"{usage['plan']}: {usage['mediaCredits']['remaining']} media credits left")
  ```
</CodeGroup>

## Example Response

<CodeGroup>
  <CodeGroup.Tab label="200 OK">
    ```json theme={"system"}
    {
      "plan": "Studio (Monthly)",
      "mediaCredits": {
        "total": 4000,
        "used": 1240,
        "remaining": 2760
      },
      "aiCredits": {
        "total": 400,
        "used": 35,
        "remaining": 365
      },
      "maxConcurrentProjects": 10,
      "projectRetentionDays": 90,
      "resetsOn": 1785412800
    }
    ```
  </CodeGroup.Tab>

  <CodeGroup.Tab label="401 Unauthorized">
    ```json theme={"system"}
    {
      "detail": "Unauthorized - Invalid or missing API key"
    }
    ```
  </CodeGroup.Tab>

  <CodeGroup.Tab label="429 Too Many Requests">
    ```json theme={"system"}
    {
      "detail": "Too Many Requests - Rate limit of 10 requests per minute exceeded"
    }
    ```
  </CodeGroup.Tab>
</CodeGroup>

## Rate Limiting

This endpoint is subject to the standard rate limit of **10 requests per minute**.

## Next Steps

* **Low on media credits?** Get a checkout link with [Top Up Media Credits](/api-reference/top-up-media-credits)
* **Changing plans?** Get a billing portal link with [Manage Subscription](/api-reference/manage-subscription)


## OpenAPI

````yaml GET /automation/get-plan-usage
openapi: 3.1.0
info:
  title: Reap Automation API
  description: AI-powered video processing automation API
  version: 1.0.0
servers:
  - url: https://public.reap.video/api/v1
security:
  - bearerAuth: []
paths:
  /automation/get-plan-usage:
    get:
      summary: Get Plan Usage
      description: >-
        Get the current plan and credit usage so you can check remaining credits
        before submitting projects
      operationId: getPlanUsage
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanUsageResponse'
components:
  schemas:
    PlanUsageResponse:
      type: object
      properties:
        plan:
          type: string
          description: User-friendly plan label, e.g. "Studio (Monthly)"
          example: Studio (Monthly)
        mediaCredits:
          $ref: '#/components/schemas/CreditPool'
        aiCredits:
          $ref: '#/components/schemas/CreditPool'
        maxConcurrentProjects:
          type: integer
          description: How many automation projects can process at once on this plan
        projectRetentionDays:
          type: integer
          description: How long completed projects are kept before expiry
        resetsOn:
          type: integer
          description: Unix timestamp when the usage counters reset
    CreditPool:
      type: object
      properties:
        total:
          type: integer
          description: Effective spendable cap, including active top-ups
        used:
          type: integer
          description: Credits consumed this cycle. Can exceed total when overage occurred.
        remaining:
          type: integer
          description: max(0, total - used)
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````