openapi: 3.1.0
info:
title: Cat Facts Breeds API
description: Free REST API providing random cat facts, breed information, and cat-related trivia for developers building fun applications and learning APIs. No authentication required; CORS enabled for frontend use. Endpoints return paginated JSON data with configurable limits and max-length filters.
version: 1.0.0
contact:
url: https://catfact.ninja/
license:
name: MIT
url: https://github.com/alexwohlbruck/cat-facts/blob/master/LICENSE
servers:
- url: https://catfact.ninja
description: Production server
tags:
- name: Breeds
paths:
/breeds:
get:
operationId: getBreeds
summary: Get a paginated list of cat breeds
description: Returns a paginated list of cat breeds with details.
parameters:
- name: limit
in: query
required: false
description: Number of breeds to return per page.
schema:
type: integer
minimum: 1
maximum: 1000
default: 10
- name: page
in: query
required: false
description: Page number for pagination.
schema:
type: integer
minimum: 1
default: 1
responses:
'200':
description: Paginated list of cat breeds
content:
application/json:
schema:
$ref: '#/components/schemas/BreedList'
example:
current_page: 1
data:
- breed: Abyssinian
country: Ethiopia
origin: Natural/Standard
coat: Short
pattern: Ticked
- breed: Aegean
country: Greece
origin: Natural/Standard
coat: Semi-long
pattern: Bi- or tri-colored
first_page_url: https://catfact.ninja/breeds?page=1
from: 1
last_page: 49
last_page_url: https://catfact.ninja/breeds?page=49
next_page_url: https://catfact.ninja/breeds?page=2
path: https://catfact.ninja/breeds
per_page: 10
prev_page_url: null
to: 10
total: 487
tags:
- Breeds
components:
schemas:
BreedList:
type: object
description: Paginated list of cat breeds (Laravel-style pagination).
properties:
current_page:
type: integer
description: Current page number.
example: 1
data:
type: array
description: Array of cat breeds on this page.
items:
$ref: '#/components/schemas/Breed'
first_page_url:
type: string
format: uri
description: URL of the first page.
from:
type: integer
description: First item number in current page.
example: 1
last_page:
type: integer
description: Last page number.
example: 49
last_page_url:
type: string
format: uri
description: URL of the last page.
links:
type: array
description: Pagination links.
items:
$ref: '#/components/schemas/PaginationLink'
next_page_url:
type: string
format: uri
nullable: true
description: URL of the next page, or null if on last page.
path:
type: string
format: uri
description: Base path for this resource.
per_page:
type: integer
description: Number of items per page.
example: 10
prev_page_url:
type: string
format: uri
nullable: true
description: URL of the previous page, or null if on first page.
to:
type: integer
description: Last item number in current page.
example: 10
total:
type: integer
description: Total number of breeds.
example: 487
PaginationLink:
type: object
description: A single pagination link entry.
properties:
url:
type: string
format: uri
nullable: true
description: URL for this page link.
label:
type: string
description: Display label for this link (e.g. page number or Previous/Next).
active:
type: boolean
description: Whether this link represents the current page.
Breed:
type: object
description: Information about a cat breed.
required:
- breed
properties:
breed:
type: string
description: Name of the cat breed.
example: Abyssinian
country:
type: string
description: Country of origin.
example: Ethiopia
origin:
type: string
description: Origin type (e.g. Natural/Standard, Mutation, Hybrid).
example: Natural/Standard
coat:
type: string
description: Coat length description.
example: Short
pattern:
type: string
description: Coat pattern description.
example: Ticked