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

# Get workspace usage

> Returns render minutes, task count, and egress bytes for the current billing period.



## OpenAPI

````yaml /openapi.json get /v1/workspace/usage
openapi: 3.1.0
info:
  title: Framelane API
  description: >
    Framelane renders video and runs AI media tasks from a single declarative
    request.


    ### Authentication

    Send your API key as a bearer token: `Authorization: Bearer fl_live_...`.


    ### Core workflow

    1. **Get media in.** Pass any publicly accessible URL directly, or `POST
    /v1/uploads` to
       get a signed URL, then `PUT` your file to it.
    2. **Submit one JSON payload.** `POST /v1/renders` composes a whole scene
    (canvas +
       `elements[]` + `transitions[]`) in a single request; `POST /v1/tasks/{type}` runs an AI
       operation (remove-background, gaze-redirect, super-resolution, transcribe).
    3. **Wait for completion.** Jobs are async: poll `GET
    /v1/{renders|tasks}/{id}` or register
       a webhook. Statuses end in `completed`, `failed`, or `cancelled`.
    4. **Fetch the result.** `GET /v1/{renders|tasks}/{id}/download` redirects
    to a short-lived
       signed URL for the output artifact.

    ### Discovering what's possible

    Call **`GET /v1/capabilities`** (no auth) for the machine-readable catalog
    of every effect,

    motion, transition, format, element type, and task parameter — each flagged
    with whether the

    renderer supports it, plus all numeric ranges and rate limits. Validate
    against it before

    submitting to avoid `422`s.


    ### Idempotency

    `POST` endpoints accept an `Idempotency-Key` header. The same key with the
    same body replays

    the original response (`200`); with a different body it returns `409
    Conflict`.


    ### Errors

    Every error has the shape `{"error": {"code", "message", "details"}}`. The
    machine-readable

    `code` (e.g. `source_not_found`, `quota_exceeded`, `codec_unsupported`) is
    stable — branch on

    it to self-correct.
  version: dev
servers:
  - url: https://api.framelane.io
    description: Production
security: []
tags:
  - name: capabilities
    description: Discover supported features, formats, and limits.
  - name: renders
    description: Compose and render video from a declarative timeline.
  - name: tasks
    description: >-
      Run AI media operations: background removal, gaze redirect,
      super-resolution, transcription.
  - name: uploads
    description: Get signed URLs to upload source media into Framelane storage.
  - name: webhooks
    description: Subscribe to job lifecycle events with signed delivery.
  - name: workspace
    description: Manage your workspace, usage, and assets.
  - name: api-keys
    description: Create and revoke API keys.
  - name: auth
    description: Session sync for the first-party console.
  - name: signup
    description: Create a workspace and verify email.
  - name: billing
    description: Manage your subscription and billing portal.
  - name: system
    description: Health, readiness, and version probes.
paths:
  /v1/workspace/usage:
    get:
      tags:
        - workspace
      summary: Get workspace usage
      description: >-
        Returns render minutes, task count, and egress bytes for the current
        billing period.
      operationId: get_usage
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceUsage'
        '401':
          description: Missing or invalid API key.
      security:
        - ApiKey: []
components:
  schemas:
    WorkspaceUsage:
      properties:
        period_start:
          type: string
          format: date-time
          title: Period Start
          description: Start of the current billing period (first of month).
        period_end:
          type: string
          format: date-time
          title: Period End
          description: Exclusive end of the current billing period.
        render_minutes:
          type: number
          title: Render Minutes
          description: Total render output duration in minutes for the period.
          example: 142.7
        task_count:
          type: integer
          title: Task Count
          description: Total AI tasks submitted during the period.
          example: 384
        egress_bytes:
          type: integer
          title: Egress Bytes
          description: Total artifact egress bytes for the period.
          example: 5368709120
      type: object
      required:
        - period_start
        - period_end
        - render_minutes
        - task_count
        - egress_bytes
      title: WorkspaceUsage
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer

````