Johrh Categories API
The Categories API from Johrh — 3 operation(s) for categories.
The Categories API from Johrh — 3 operation(s) for categories.
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/johrh-categories-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: Vitrin Account Categories API
version: 2026.2.23
servers:
- url: https://johrh.com
description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Categories
paths:
/categories:
get:
tags:
- Categories
summary: List Categories
operationId: list_categories_categories_get
responses:
'200':
description: Successful Response
content:
text/html:
schema:
type: string
/categories/{category_id}:
get:
tags:
- Categories
summary: Category Details
operationId: category_details_categories__category_id__get
parameters:
- name: category_id
in: path
required: true
schema:
anyOf:
- type: integer
- type: string
title: Category Id
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
- {}
description: Page number
default: 1
title: Page
description: Page number
- name: page_size
in: query
required: false
schema:
anyOf:
- type: integer
- {}
description: Items per page
default: 24
title: Page Size
description: Items per page
- name: q
in: query
required: false
schema:
anyOf:
- type: string
- {}
- type: 'null'
title: Q
- name: sort_by
in: query
required: false
schema:
anyOf:
- enum:
- popularity_order
- price
- display_order
- created_at
type: string
- type: string
- type: 'null'
title: Sort By
- name: order
in: query
required: false
schema:
anyOf:
- enum:
- asc
- desc
type: string
- type: string
- {}
- type: 'null'
default: asc
title: Order
- name: categories
in: query
required: false
schema:
anyOf:
- type: string
- {}
- type: 'null'
description: Filter by category
title: Categories
description: Filter by category
- name: price_min
in: query
required: false
schema:
anyOf:
- type: number
- {}
- type: 'null'
description: Minimum price filter
title: Price Min
description: Minimum price filter
- name: price_max
in: query
required: false
schema:
anyOf:
- type: number
- {}
- type: 'null'
description: Maximum price filter
title: Price Max
description: Maximum price filter
- name: on_sale
in: query
required: false
schema:
anyOf:
- type: boolean
- {}
- type: 'null'
description: Filter on sale products
title: On Sale
description: Filter on sale products
- name: attribute_values
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- {}
- type: 'null'
description: Filter by attribute values
title: Attribute Values
description: Filter by attribute values
responses:
'200':
description: Successful Response
content:
text/html:
schema:
type: string
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/categories/{category_id}/{slug}:
get:
tags:
- Categories
summary: Category Details
operationId: category_details_categories__category_id___slug__get
parameters:
- name: category_id
in: path
required: true
schema:
anyOf:
- type: integer
- type: string
title: Category Id
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
- {}
description: Page number
default: 1
title: Page
description: Page number
- name: page_size
in: query
required: false
schema:
anyOf:
- type: integer
- {}
description: Items per page
default: 24
title: Page Size
description: Items per page
- name: q
in: query
required: false
schema:
anyOf:
- type: string
- {}
- type: 'null'
title: Q
- name: sort_by
in: query
required: false
schema:
anyOf:
- enum:
- popularity_order
- price
- display_order
- created_at
type: string
- type: string
- type: 'null'
title: Sort By
- name: order
in: query
required: false
schema:
anyOf:
- enum:
- asc
- desc
type: string
- type: string
- {}
- type: 'null'
default: asc
title: Order
- name: categories
in: query
required: false
schema:
anyOf:
- type: string
- {}
- type: 'null'
description: Filter by category
title: Categories
description: Filter by category
- name: price_min
in: query
required: false
schema:
anyOf:
- type: number
- {}
- type: 'null'
description: Minimum price filter
title: Price Min
description: Minimum price filter
- name: price_max
in: query
required: false
schema:
anyOf:
- type: number
- {}
- type: 'null'
description: Maximum price filter
title: Price Max
description: Maximum price filter
- name: on_sale
in: query
required: false
schema:
anyOf:
- type: boolean
- {}
- type: 'null'
description: Filter on sale products
title: On Sale
description: Filter on sale products
- name: attribute_values
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- {}
- type: 'null'
description: Filter by attribute values
title: Attribute Values
description: Filter by attribute values
responses:
'200':
description: Successful Response
content:
text/html:
schema:
type: string
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
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
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError