---
title: "Capabilities"
method: GET
path: "/account/capabilities"
tags: ["account"]
---

# Capabilities

`GET /account/capabilities`

## Request

- Base URL: `https://api.beatra.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.beatra.ai/account/capabilities`
- Auth: none declared

What Beatra can actually do for this customer, projected from live state.

Purely derived — see `app/services/accounts/capabilities.py`. The console
reads this instead of hardcoding a capability catalog.

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- AccountCapabilitiesResponse
  - `items` AccountCapabilityItem[], required
    - `capability` string, required
    - `release_state` 'ga' | 'beta' | 'preview' | 'planned', required: The only release states `/account/capabilities` can emit. `app.api.contract.ReleaseState` also has `stub` and `internal`. Both are structurally excluded from this projection — a stub 501s and an internal route is not a customer surface — so they are absent from this enum on purpose. The console can trust every state it sees here.
    - `reachable_via` CapabilitySurfaceEnum[]
    - `rest_path` string, required
    - `mcp_tools` string[]
    - `models` string[]
    - `image_interfaces` ImageInterfaceCard[]
      - `model` string, required
      - `display_name` string, required
      - `owned_by` 'beatra'
      - `capability` 'text_to_image' | 'image_to_image' | 'image_edit', required
      - `status` 'available'
      - `controls` ImageControlCard[], required
        - `field` string, required
        - `value_type` 'string' | 'integer' | 'boolean' | 'enum' | 'canvas' | 'image_collection' | 'palette' | 'region_collection', required
        - `required` boolean, required
        - `nullable` boolean, required
        - `default` union, required
          - string
          - integer
          - boolean
          - object
        - `model_default` boolean, nullable
        - `omitted_behavior` 'invalid' | 'use_public_default' | 'use_model_default' | 'same_as_omitted' | 'random', required
        - `null_behavior` 'invalid' | 'same_as_omitted' | 'use_model_default', required
        - `allowed_values` string[], nullable
        - `minimum` union
          - integer
          - number
        - `maximum` union
          - integer
          - number
        - `min_items` integer, nullable
        - `max_items` integer, nullable
        - `max_length` integer, nullable
      - `prompt` ImagePromptCard, required
        - `limit` integer, required
        - `unit` 'characters' | 'qwen_tokens', required
        - `overflow` 'reject'
        - `languages` string[], required
        - `counter` 'unicode_characters' | 'qwen_open_family_proxy', required
        - `counter_is_exact` boolean, required
        - `counter_unavailable_behavior` 'reject'
      - `inputs` ImageInputsCard, required
        - `minimum_count` integer, required
        - `public_max_count` integer, required
        - `native_max_count` integer, required
        - `formats` string[], required
        - `hard_constraints` ImageInputHardConstraints, required
          - `max_bytes` integer, nullable, required
          - `edge_pixels` ImageIntegerRange, required
            - `minimum` integer, required
            - `maximum` integer, required
          - `aspect_ratio` ImageAspectRange, required
            - `minimum` string, required
            - `maximum` string, required
          - `alpha` 'allowed' | 'reject_png_alpha', required
        - `recommendations` ImageInputRecommendations, required
          - `edge_pixels` ImageIntegerRange, required
            - `minimum` integer, required
            - `maximum` integer, required
        - `animation` object, required
        - `transport` ImageInputTransportCard, required
          - `accepted_kinds` string[], required
          - `https_only` boolean, required
          - `data_uri_max_encoded_length` integer, nullable, required
        - `ordering` 'none' | 'ordered_references' | 'first_is_base_remaining_are_references', required
        - `source_aspect_anchor` 'none' | 'first_input' | 'last_input', required
      - `outputs` ImageOutputsCard, required
        - `public_max_count` integer, required
        - `native_max_independent_count` integer, required
        - `native_max_sequence_count` integer, nullable
        - `relationships` string[], required
        - `format` 'image/png'
      - `canvas` ImageCanvasCard, required
        - `default` object, required
        - `preset_tiers` string[], required
        - `target` ImageTargetCanvasCard, required
          - `supported` boolean, required
          - `minimum_total_pixels` integer, required
          - `maximum_total_pixels` integer, required
          - `minimum_aspect_ratio` string, nullable, required
          - `maximum_aspect_ratio` string, nullable, required
          - `normalization_multiple` integer, nullable, required
          - `actual_dimensions_may_differ` boolean, required
        - `source_aspect_anchor` 'none' | 'first_input' | 'last_input', required
      - `rules` ImageInterfaceRule[], required
        - `id` string, required
        - `when` ImageRulePredicate[], required
          - `field` string, required
          - `operator` 'equals' | 'present' | 'greater_than', required
          - `value` union
            - string
            - integer
            - boolean
            - string[]
        - `effect` ImageRuleEffect, required
          - `type` 'allow' | 'forbid' | 'limit' | 'require', required
          - `field` string, required
          - `value` union
            - string
            - integer
            - boolean
            - string[]
      - `pricing` ImagePricingCard, required
        - `meter` 'image_count'
        - `unit` 'image'
        - `billing_basis` 'successful_image_count'
        - `estimate_formula` 'unit_credits * successful_image_count'
        - `options` ImagePriceOptionCard[], required
          - `dimensions` object, required
          - `unit_credits` string, required
      - `auto` ImageAutoSelectionCard, required
        - `default_model` 'auto'
        - `basic_request_preference` string, required
        - `request_dependent` true
        - `persisted_selection_field` 'resolved_model'
        - `description` string, required
    - `audio_interfaces` AudioModelCard[]
      - `schema_version` 'audio-interface.v1'
      - `model` string, required
      - `display_name` string, required
      - `owned_by` 'beatra'
      - `capability` 'text_to_speech' | 'voice_clone', required
      - `status` 'available'
      - `controls` string[], required
      - `constraints` union, required
        - SpeechConstraintsCard
          - `input_max_characters` 50000
          - `supported_languages` string[], required
          - `formats` string[], required
          - `sample_rates` integer[], required
          - `speed` AudioNumberRange, required
            - `minimum` string, required
            - `maximum` string, required
            - `exclusive_minimum` boolean
          - `volume` AudioNumberRange, required
            - `minimum` string, required
            - `maximum` string, required
            - `exclusive_minimum` boolean
          - `pitch` AudioNumberRange, required
            - `minimum` string, required
            - `maximum` string, required
            - `exclusive_minimum` boolean
          - `emotions` string[], required
          - `billing_character_weights` SpeechCharacterWeights
            - `han_ideograph` 2
            - `other` 1
          - `minimum_billable_characters` 0
        - VoiceCloneConstraintsCard
          - `accepted_sample_kinds` string[], required
          - `sample_min_seconds` 10
          - `sample_max_seconds` 300
          - `sample_max_bytes` 20971520
          - `consent_attestation_required` true
          - `automatic_formal_activation` true
      - `pricing` AudioPricingCard, required
        - `meter` 'character' | 'task', required
        - `unit` 'character' | 'task', required
        - `unit_price_credits` string, required
        - `scale` string, required
        - `billing_basis` 'beatra_weighted_characters' | 'successful_activated_voice', required
        - `estimate_formula` '(unit_price_credits * billable_quantity) / scale'
    - `understanding_interfaces` UnderstandingModelCard[]
      - `schema_version` 'understanding-interface.v1'
      - `model` string, required
      - `display_name` string, required
      - `owned_by` 'beatra'
      - `capability` 'image_to_text' | 'video_to_text', required
      - `status` 'available'
      - `controls` string[], required
      - `media` UnderstandingMediaConstraintsCard, required
        - `kind` 'image' | 'video', required
        - `accepted_kinds` string[], required
        - `min_items` 1
        - `max_items` integer, required
        - `max_bytes_each` integer, required
        - `max_duration_seconds` integer, nullable
        - `sampling_fps` integer, nullable
      - `detail` UnderstandingDetailCard, required
        - `default` 'default'
        - `values` string[]
        - `affects_price` false
      - `thinking` UnderstandingThinkingCard, required
        - `public_control` false
        - `mode` 'adaptive' | 'model_default', required
      - `pricing` UnderstandingPricingCard[], required
        - `meter` 'image_count' | 'input_video_second', required
        - `unit` 'image' | 'second', required
        - `unit_price_credits` string, required
        - `scale` string, required
        - `billing_basis` 'admitted_image_count' | 'ceil_admitted_input_video_seconds', required
        - `estimate_formula` '(unit_price_credits * billable_quantity) / scale'
    - `max_output_images` integer, nullable
    - `max_canvas_pixels` integer, nullable
    - `starting_credits` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/beatra/apis/agent-service-api.md) · [All operations](https://skmtc.dev/beatra/apis/agent-service-api/llms.txt) · [OpenAPI document](https://skmtc.dev/beatra/apis/agent-service-api/revisions/58e440556498?raw)
