AimRank Domains API

The Domains API from AimRank — 8 operation(s) for domains.

Operations 13

GET /api/v1/domains List Domains #
POST /api/v1/domains Create Domain #
GET /api/v1/domains/search/similar Search Similar Domains #
GET /api/v1/domains/{domain_id} Get Domain #
PUT /api/v1/domains/{domain_id} Update Domain #
DELETE /api/v1/domains/{domain_id} Delete Domain #
POST /api/v1/domains/{domain_id}/exclusivity Set Domain Exclusivity #
POST /api/v1/domains/{domain_id}/logo Upload Domain Logo #
POST /api/v1/domains/{domain_id}/entities Add Entities To Domain #
GET /api/v1/domains/{domain_id}/entities List Domain Entities #
POST /api/v1/domains/{domain_id}/competitions Create Competition #
GET /api/v1/domains/{domain_id}/competitions List Competitions #
GET /api/v1/domains/{domain_id}/expert-leaderboard Get Expert Leaderboard #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aimrank-io:aimrank-io-domains-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aimrank-io-domains-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AimRank Domains API
  description: Ranking-as-a-Service API — Turn binary comparisons into calibrated rankings with Glicko-2, Bradley-Terry, TrueSkill, and cross-domain transfer learning. Includes webhooks, API keys, RLHF exports, and embeddable widgets.
  version: 4.12.0
tags:
- name: Domains
paths:
  /api/v1/domains:
    get:
      tags:
      - Domains
      summary: List Domains
      description: List all domains owned by the current user.
      operationId: list_domains_api_v1_domains_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
    post:
      tags:
      - Domains
      summary: Create Domain
      description: Create a new domain with optional initial entities.
      operationId: create_domain_api_v1_domains_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDomainRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/domains/search/similar:
    get:
      tags:
      - Domains
      summary: Search Similar Domains
      description: 'Find public domains most similar to a free-text query or a known domain.


        Use ``q`` for free-text similarity (e.g., "pharma evaluation drug

        interactions"). Use ``domain_id`` to find domains similar to one you

        already know about. Exactly one of the two must be supplied.


        Returns a ranked list with cosine similarity score in [0, 1].

        Public endpoint — no auth required. Only public domains are

        searched / returned.'
      operationId: search_similar_domains_api_v1_domains_search_similar_get
      parameters:
      - name: q
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Q
      - name: domain_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Domain Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 10
          title: Limit
      - name: min_score
        in: query
        required: false
        schema:
          type: number
          default: 0.05
          title: Min Score
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/domains/{domain_id}:
    get:
      tags:
      - Domains
      summary: Get Domain
      description: 'Get domain detail with entity pool stats and competition list.


        Public — anyone can view a domain''s leaderboard and competition list.

        This enables shareable domain URLs on social media.'
      operationId: get_domain_api_v1_domains__domain_id__get
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Domains
      summary: Update Domain
      description: Update domain settings. Only whitelisted fields are patchable.
      operationId: update_domain_api_v1_domains__domain_id__put
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDomainRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Domains
      summary: Delete Domain
      description: Delete a domain and all its entities. Competitions (rankings) are preserved but unlinked.
      operationId: delete_domain_api_v1_domains__domain_id__delete
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/domains/{domain_id}/exclusivity:
    post:
      tags:
      - Domains
      summary: Set Domain Exclusivity
      description: 'Set or clear an anchor-buyer exclusivity window on a domain.


        Owner only. While `exclusive_until` is in the future, the domain is

        gated from the public L2 marketplace surface (per LOI §1.4 in

        docs/raise/12_anchor_buyer_loi.md).


        To clear: send `{"exclusive_until": null, "exclusive_buyer_label": null}`.'
      operationId: set_domain_exclusivity_api_v1_domains__domain_id__exclusivity_post
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetExclusivityRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/domains/{domain_id}/logo:
    post:
      tags:
      - Domains
      summary: Upload Domain Logo
      description: 'Upload a logo for a domain.


        Mirrors the ranking-thumbnail upload pattern. Saves to

        static/domain-logos/{domain_id}.{ext} via the storage backend

        (S3 in prod, local FS in dev) and sets domain.image_url.

        Returned URL works immediately on the domain detail page.


        Owner-only — checked via the owner_id filter rather than the

        full ranking-permission system because Domains don''t have

        collaborators yet.'
      operationId: upload_domain_logo_api_v1_domains__domain_id__logo_post
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_domain_logo_api_v1_domains__domain_id__logo_post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/domains/{domain_id}/entities:
    post:
      tags:
      - Domains
      summary: Add Entities To Domain
      description: Add entities to the domain's entity pool.
      operationId: add_entities_to_domain_api_v1_domains__domain_id__entities_post
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddEntitiesRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Domains
      summary: List Domain Entities
      description: List all entities in a domain's pool, sorted by rating. Public endpoint.
      operationId: list_domain_entities_api_v1_domains__domain_id__entities_get
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/domains/{domain_id}/competitions:
    post:
      tags:
      - Domains
      summary: Create Competition
      description: 'Create a competition (ranking) from the domain''s entity pool.


        In ''open'' mode: creates a ranking linked to the domain. Entities are

        shared — votes update domain-level ratings.


        In ''bracket'' mode: creates a ranking + seeds a bracket tournament

        from the domain''s entity pool.'
      operationId: create_competition_api_v1_domains__domain_id__competitions_post
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api__routes__domains__CreateCompetitionRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Domains
      summary: List Competitions
      description: List all competitions in a domain.
      operationId: list_competitions_api_v1_domains__domain_id__competitions_get
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/domains/{domain_id}/expert-leaderboard:
    get:
      tags:
      - Domains
      summary: Get Expert Leaderboard
      description: 'Top voters in a domain, ranked by Cohen κ vs majority consensus.


        Public — surfaces verified domain expertise as a citable credential.

        Per the L4 expert-influencer strategy: Twitter/Substack experts have

        follower-count authority but no verifiable judgment quality;

        consensus κ converts that into a falsifiable signal.


        Aggregates votes across all competitions (Rankings) under this Domain.

        Voters with fewer than `min_pairs` overlapping pairs are excluded —

        too little signal to estimate κ stably (Layer 4 of the methodology

        paper §4).'
      operationId: get_expert_leaderboard_api_v1_domains__domain_id__expert_leaderboard_get
      parameters:
      - name: domain_id
        in: path
        required: true
        schema:
          type: string
          title: Domain Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 10
          title: Limit
      - name: min_pairs
        in: query
        required: false
        schema:
          type: integer
          default: 5
          title: Min Pairs
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CreateDomainRequest:
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 2
          title: Name
        description:
          anyOf:
          - type: string
            maxLength: 4000
          - type: 'null'
          title: Description
        category:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Category
        image_url:
          anyOf:
          - type: string
            maxLength: 512
          - type: 'null'
          title: Image Url
        media_type:
          type: string
          pattern: ^(text|image|audio|video)$
          title: Media Type
          default: text
        default_algorithm:
          type: string
          maxLength: 32
          title: Default Algorithm
          default: glicko2
        default_settings:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Default Settings
        visibility:
          type: string
          pattern: ^(public|unlisted|private)$
          title: Visibility
          default: public
        entities:
          anyOf:
          - items:
              type: string
            type: array
            maxItems: 500
          - type: 'null'
          title: Entities
        constitution:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Constitution
          description: Optional list of explicit principles voters apply when judging. List of strings or {id,text,category} dicts. Inherited by competitions in this domain.
        objectives:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Objectives
          description: Optional list of evaluation axes — list of strings or {id,name,description,scale} dicts. Declarative; per-axis voting is v2.
      type: object
      required:
      - name
      title: CreateDomainRequest
    AddEntitiesRequest:
      properties:
        entities:
          items:
            additionalProperties: true
            type: object
          type: array
          maxItems: 500
          minItems: 1
          title: Entities
          description: '[{"name": "...", "description": "...", "image_url": "..."}]'
      type: object
      required:
      - entities
      title: AddEntitiesRequest
    api__routes__domains__CreateCompetitionRequest:
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 2
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        mode:
          type: string
          pattern: ^(open|bracket)$
          title: Mode
          default: open
        bracket_size:
          anyOf:
          - type: integer
          - type: 'null'
          title: Bracket Size
          description: Power of 2 for bracket mode
        bracket_strategy:
          type: string
          pattern: ^(rating|random)$
          title: Bracket Strategy
          default: rating
      type: object
      required:
      - name
      title: CreateCompetitionRequest
    Body_upload_domain_logo_api_v1_domains__domain_id__logo_post:
      properties:
        file:
          type: string
          contentMediaType: application/octet-stream
          title: File
          description: Logo image (JPEG/PNG/WebP/GIF, max 2MB)
      type: object
      required:
      - file
      title: Body_upload_domain_logo_api_v1_domains__domain_id__logo_post
    SetExclusivityRequest:
      properties:
        exclusive_until:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Exclusive Until
        exclusive_buyer_label:
          anyOf:
          - type: string
            maxLength: 255
          - type: 'null'
          title: Exclusive Buyer Label
      type: object
      title: SetExclusivityRequest
    UpdateDomainRequest:
      properties:
        name:
          anyOf:
          - type: string
            maxLength: 255
            minLength: 2
          - type: 'null'
          title: Name
        description:
          anyOf:
          - type: string
            maxLength: 4000
          - type: 'null'
          title: Description
        category:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Category
        image_url:
          anyOf:
          - type: string
            maxLength: 512
          - type: 'null'
          title: Image Url
        media_type:
          anyOf:
          - type: string
            pattern: ^(text|image|audio|video)$
          - type: 'null'
          title: Media Type
        default_algorithm:
          anyOf:
          - type: string
            maxLength: 32
          - type: 'null'
          title: Default Algorithm
        default_settings:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Default Settings
        visibility:
          anyOf:
          - type: string
            pattern: ^(public|unlisted|private)$
          - type: 'null'
          title: Visibility
        constitution:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Constitution
        objectives:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Objectives
      type: object
      title: UpdateDomainRequest
      description: 'Whitelisted fields the owner can patch. Prevents mass-assignment

        attacks on owner_id, entity_count, created_at, etc.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key