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

> ## Agent Instructions
> API access is self-serve: register at https://developers.ochy.io/register, verify the email (grants 1 free analysis credit), generate the API key in the portal, then buy prepaid credits at 2.00 EUR per analysis via Stripe Checkout. See /get-api-access for the exact funnel.
> Agents can complete every funnel step except card entry: hand the Stripe Checkout URL to the user for payment.
> Base URL: https://partner-api.ochy-prod.com. Pass the API key as `Authorization: Bearer` (preferred) or `X-API-Key`; never as a query parameter.
> One analysis consumes one credit, debited when the analysis starts. HTTP 424 with code insufficient_api_credits means the balance is empty: buy credits in the portal. If starting the analysis fails on Ochy's side, the credit is refunded automatically.
> Low-credit alerts: set a threshold and an optional webhook URL in the portal Settings tab or with PUT /settings/low-credit-alerts; an email and a credits.low event are sent once per crossing, and the alert rearms when the balance recovers.
> All endpoints use metric units: height in meters, weight in kilograms.

# List catalog brands

> Returns the brand keys of the models that are active in the catalog this API key uses.
A brand is included when at least one of its models is active.

Each string is a `brand_key`. Pass it in `favorite_brands` on `POST /shoeRecommendation/form`
to restrict a recommendation to that brand. The list is unique and sorted ascending.
An empty catalog returns `{ "brands": [] }` with status 200.




## OpenAPI

````yaml /openapi.yaml get /shoeRecommendation/brands
openapi: 3.0.1
info:
  title: Ochy Partner API
  version: 1.0.0
  description: >
    The Ochy Partner API lets you integrate running biomechanical analysis into
    your application.

    Upload a video of a runner, receive detailed biomechanical metrics, joint
    angles, running style

    classification, and frame-by-frame position data.
servers:
  - url: https://partner-api.ochy-prod.com
    description: Production
security:
  - bearerAuth: []
  - apiKeyHeader: []
paths:
  /shoeRecommendation/brands:
    get:
      tags:
        - Shoe recommendation
      summary: List catalog brands
      description: >
        Returns the brand keys of the models that are active in the catalog this
        API key uses.

        A brand is included when at least one of its models is active.


        Each string is a `brand_key`. Pass it in `favorite_brands` on `POST
        /shoeRecommendation/form`

        to restrict a recommendation to that brand. The list is unique and
        sorted ascending.

        An empty catalog returns `{ "brands": [] }` with status 200.
      operationId: listShoeBrands
      responses:
        '200':
          description: Brand keys for this API key's catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoeBrandsResponse'
              example:
                brands:
                  - adidas
                  - asics
                  - hoka
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoeRecommendationUnauthorizedResponse'
              example:
                detail: Unauthorized
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ShoeBrandsResponse:
      type: object
      required:
        - brands
      properties:
        brands:
          type: array
          description: >-
            Unique brand keys, sorted ascending. Empty when the catalog has no
            active model.
          items:
            type: string
          example:
            - adidas
            - hoka
    ShoeRecommendationUnauthorizedResponse:
      type: object
      description: Returned when the API key is missing or not valid.
      properties:
        detail:
          type: string
          example: Unauthorized
    ErrorResponse:
      type: object
      properties:
        detail:
          type: string
          example: Internal server error
        code:
          type: string
          description: Machine-readable error code (present on some errors).
          example: insufficient_api_credits
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Recommended. Pass your API key as a Bearer token in the Authorization
        header: `Authorization: Bearer YOUR_API_KEY`.
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Alternative to the Authorization header. Pass your API key in the
        `X-API-Key` header.

````