AimRank Personal Rankings API
The Personal Rankings API from AimRank — 12 operation(s) for personal rankings.
The Personal Rankings API from AimRank — 12 operation(s) for personal rankings.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/aimrank-io:aimrank-io-personal-rankings-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: AimRank Personal Rankings 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: Personal Rankings
paths:
/api/v1/personal/templates:
get:
tags:
- Personal Rankings
summary: List Templates
description: Get available collection templates.
operationId: list_templates_api_v1_personal_templates_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/TemplateResponse'
type: array
title: Response List Templates Api V1 Personal Templates Get
/api/v1/personal/collections:
get:
tags:
- Personal Rankings
summary: List Collections
description: List all personal collections for the current user.
operationId: list_collections_api_v1_personal_collections_get
parameters:
- name: category
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Category
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CollectionResponse'
title: Response List Collections Api V1 Personal Collections Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- Personal Rankings
summary: Create Collection
description: Create a new personal collection.
operationId: create_collection_api_v1_personal_collections_post
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionCreate'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}:
get:
tags:
- Personal Rankings
summary: Get Collection
description: Get a specific collection.
operationId: get_collection_api_v1_personal_collections__collection_id__get
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
put:
tags:
- Personal Rankings
summary: Update Collection
description: Update a collection.
operationId: update_collection_api_v1_personal_collections__collection_id__put
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionUpdate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Personal Rankings
summary: Delete Collection
description: Delete a collection and all its items.
operationId: delete_collection_api_v1_personal_collections__collection_id__delete
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/items:
get:
tags:
- Personal Rankings
summary: List Items
description: List all items in a collection.
operationId: list_items_api_v1_personal_collections__collection_id__items_get
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
- name: sort_by
in: query
required: false
schema:
enum:
- rank
- name
- rating
- created
type: string
default: rank
title: Sort By
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ItemResponse'
title: Response List Items Api V1 Personal Collections Collection Id Items Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- Personal Rankings
summary: Add Item
description: Add an item to a collection.
operationId: add_item_api_v1_personal_collections__collection_id__items_post
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ItemCreate'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ItemResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/items/bulk:
post:
tags:
- Personal Rankings
summary: Add Items Bulk
description: Add multiple items to a collection at once.
operationId: add_items_bulk_api_v1_personal_collections__collection_id__items_bulk_post
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ItemBulkCreate'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ItemResponse'
title: Response Add Items Bulk Api V1 Personal Collections Collection Id Items Bulk Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/items/{item_id}:
put:
tags:
- Personal Rankings
summary: Update Item
description: Update an item in a collection.
operationId: update_item_api_v1_personal_collections__collection_id__items__item_id__put
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
- name: item_id
in: path
required: true
schema:
type: string
title: Item Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ItemUpdate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ItemResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Personal Rankings
summary: Delete Item
description: Remove an item from a collection.
operationId: delete_item_api_v1_personal_collections__collection_id__items__item_id__delete
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
- name: item_id
in: path
required: true
schema:
type: string
title: Item Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/next-pair:
get:
tags:
- Personal Rankings
summary: Get Next Pair
description: Get the next pair of items to compare.
operationId: get_next_pair_api_v1_personal_collections__collection_id__next_pair_get
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
- name: strategy
in: query
required: false
schema:
enum:
- smart
- random
- uncertainty
- similar
type: string
default: smart
title: Strategy
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PairResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/vote:
post:
tags:
- Personal Rankings
summary: Submit Vote
description: Submit a vote comparing two items.
operationId: submit_vote_api_v1_personal_collections__collection_id__vote_post
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/api__routes__personal_rankings__VoteCreate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/VoteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/rankings:
get:
tags:
- Personal Rankings
summary: Get Rankings
description: Get the ranked list of items in a collection.
operationId: get_rankings_api_v1_personal_collections__collection_id__rankings_get
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
- name: limit
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
title: Limit
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RankingsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/share:
post:
tags:
- Personal Rankings
summary: Generate Share Link
description: 'Generate or regenerate a share link for a collection.
- If no share code exists, creates one
- If `regenerate=true`, creates a new code (invalidates old one)
- Optionally set expiration with `expires_in_days`'
operationId: generate_share_link_api_v1_personal_collections__collection_id__share_post
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/api__routes__personal_rankings__ShareCreate'
default:
regenerate: false
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ShareResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Personal Rankings
summary: Revoke Share Link
description: Revoke the share link for a collection. Old links will no longer work.
operationId: revoke_share_link_api_v1_personal_collections__collection_id__share_delete
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/collections/{collection_id}/share/stats:
get:
tags:
- Personal Rankings
summary: Get Share Stats
description: Get sharing statistics for a collection.
operationId: get_share_stats_api_v1_personal_collections__collection_id__share_stats_get
parameters:
- name: collection_id
in: path
required: true
schema:
type: string
title: Collection Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ShareStatsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/personal/shared/{share_code}:
get:
tags:
- Personal Rankings
summary: Get Shared Collection
description: 'View a shared collection (no auth required).
Returns 404 if:
- Collection not found
- Share link has been revoked
- Share link has expired'
operationId: get_shared_collection_api_v1_personal_shared__share_code__get
parameters:
- name: share_code
in: path
required: true
schema:
type: string
title: Share Code
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RankingsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
PairResponse:
properties:
item_a:
$ref: '#/components/schemas/ItemResponse'
item_b:
$ref: '#/components/schemas/ItemResponse'
comparison_number:
type: integer
title: Comparison Number
total_items:
type: integer
title: Total Items
completion_percentage:
type: number
title: Completion Percentage
type: object
required:
- item_a
- item_b
- comparison_number
- total_items
- completion_percentage
title: PairResponse
ItemBulkCreate:
properties:
items:
items:
$ref: '#/components/schemas/ItemCreate'
type: array
maxItems: 100
minItems: 1
title: Items
type: object
required:
- items
title: ItemBulkCreate
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ItemCreate:
properties:
name:
type: string
maxLength: 255
minLength: 1
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
image_url:
anyOf:
- type: string
- type: 'null'
title: Image Url
attributes:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Attributes
type: object
required:
- name
title: ItemCreate
RankedItemResponse:
properties:
rank:
type: integer
title: Rank
item:
$ref: '#/components/schemas/ItemResponse'
confidence_level:
type: string
title: Confidence Level
type: object
required:
- rank
- item
- confidence_level
title: RankedItemResponse
ItemUpdate:
properties:
name:
anyOf:
- type: string
maxLength: 255
minLength: 1
- type: 'null'
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
image_url:
anyOf:
- type: string
- type: 'null'
title: Image Url
attributes:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Attributes
type: object
title: ItemUpdate
api__routes__personal_rankings__VoteCreate:
properties:
item_a_id:
type: string
title: Item A Id
item_b_id:
type: string
title: Item B Id
winner_id:
anyOf:
- type: string
- type: 'null'
title: Winner Id
decision_time_ms:
anyOf:
- type: integer
- type: 'null'
title: Decision Time Ms
type: object
required:
- item_a_id
- item_b_id
title: VoteCreate
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
ShareStatsResponse:
properties:
share_code:
anyOf:
- type: string
- type: 'null'
title: Share Code
is_active:
type: boolean
title: Is Active
created_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Created At
expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Expires At
view_count:
type: integer
title: View Count
last_viewed_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Viewed At
days_until_expiry:
anyOf:
- type: integer
- type: 'null'
title: Days Until Expiry
type: object
required:
- share_code
- is_active
- created_at
- expires_at
- view_count
- last_viewed_at
- days_until_expiry
title: ShareStatsResponse
CollectionResponse:
properties:
id:
type: string
title: Id
user_id:
type: string
title: User Id
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
category:
anyOf:
- type: string
- type: 'null'
title: Category
image_url:
anyOf:
- type: string
- type: 'null'
title: Image Url
is_private:
type: boolean
title: Is Private
share_code:
anyOf:
- type: string
- type: 'null'
title: Share Code
item_count:
type: integer
title: Item Count
vote_count:
type: integer
title: Vote Count
completion_percentage:
type: number
title: Completion Percentage
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- id
- user_id
- name
- description
- category
- image_url
- is_private
- share_code
- item_count
- vote_count
- completion_percentage
- created_at
- updated_at
title: CollectionResponse
CollectionCreate:
properties:
name:
type: string
maxLength: 255
minLength: 1
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
category:
anyOf:
- type: string
- type: 'null'
title: Category
image_url:
anyOf:
- type: string
- type: 'null'
title: Image Url
is_private:
type: boolean
title: Is Private
default: true
type: object
required:
- name
title: CollectionCreate
ShareResponse:
properties:
share_code:
type: string
title: Share Code
share_url:
type: string
title: Share Url
created_at:
type: string
format: date-time
title: Created At
expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Expires At
view_count:
type: integer
title: View Count
last_viewed_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Viewed At
is_active:
type: boolean
title: Is Active
type: object
required:
- share_code
- share_url
- created_at
- expires_at
- view_count
- last_viewed_at
- is_active
title: ShareResponse
CollectionUpdate:
properties:
name:
anyOf:
- type: string
maxLength: 255
minLength: 1
- type: 'null'
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
category:
anyOf:
- type: string
- type: 'null'
title: Category
image_url:
anyOf:
- type: string
- type: 'null'
title: Image Url
is_private:
anyOf:
- type: boolean
- type: 'null'
title: Is Private
type: object
title: CollectionUpdate
api__routes__personal_rankings__ShareCreate:
properties:
expires_in_days:
anyOf:
- type: integer
maximum: 365.0
minimum: 1.0
- type: 'null'
title: Expires In Days
description: Days until link expires (null = never)
regenerate:
type: boolean
title: Regenerate
description: Generate a new code even if one exists
default: false
type: object
title: ShareCreate
ItemResponse:
properties:
id:
type: string
title: Id
collection_id:
type: string
title: Collection Id
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
image_url:
anyOf:
- type: string
- type: 'null'
title: Image Url
attributes:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Attributes
rating:
type: integer
title: Rating
confidence:
type: integer
title: Confidence
uncertainty_level:
type: string
title: Uncertainty Level
match_count:
type: integer
title: Match Count
win_count:
type: integer
title: Win Count
loss_count:
type: integer
title: Loss Count
win_rate:
type: number
title: Win Rate
current_rank:
anyOf:
- type: integer
- type: 'null'
title: Current Rank
created_at:
type: string
format: date-time
title: Created At
type: object
required:
- id
- collection_id
- name
- description
- image_url
- attributes
- rating
- confidence
- uncertainty_level
- match_count
- win_count
- loss_count
- win_rate
- current_rank
- created_at
title: ItemResponse
TemplateResponse:
properties:
id:
type: string
title: Id
name:
type: string
title: Name
category:
type: string
title: Category
description:
type: string
title: Description
suggested_items:
items:
type: string
type: array
title: Suggested Items
type: object
required:
- id
- name
- category
- description
- suggested_items
title: TemplateResponse
RankingsResponse:
properties:
collection:
$ref: '#/components/schemas/CollectionResponse'
rankings:
items:
$ref: '#/components/schemas/RankedItemResponse'
type: array
title: Rankings
total_votes:
type: integer
title: Total Votes
completion_percentage:
type: number
title: Completion Percentage
type: object
required:
- collection
- rankings
- total_votes
- completion_percentage
title: RankingsResponse
VoteResponse:
properties:
vote_id:
type: string
title: Vote Id
winner_id:
anyOf:
- type: string
- type: 'null'
title: Winner Id
is_skip:
type: boolean
title: Is Skip
rating_change_a:
type: number
title: Rating Change A
rating_change_b:
type: number
title: Rating Change B
new_rating_a:
type: number
title: New Rating A
new_rating_b:
type: number
title: New Rating B
item_a_new_rank:
anyOf:
- type: integer
- type: 'null'
title: Item A New Rank
item_b_new_rank:
anyOf:
- type: integer
- type: 'null'
title: Item B New Rank
collection_vote_count:
type: integer
title: Collection Vote Count
completion_percentage:
type: number
title: Completion Percentage
next_pair:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Next Pair
type: object
required:
- vote_id
- winner_id
- is_skip
- rating_change_a
- rating_change_b
- new_rating_a
- new_rating_b
- item_a_new_rank
- item_b_new_rank
- collection_vote_count
- completion_percentage
- next_pair
title: VoteResponse
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: X-API-Key