{
"openapi": "3.1.0",
"info": {
"title": "UnifAPI",
"version": "0.0.1",
"description": "Unified, AI-friendly API for public-data providers. Single source of truth for the UnifAPI gateway â consumed by docs (Fumadocs), the marketing site, and downstream SDK generators.",
"contact": {
"name": "UnifAPI",
"url": "https://unifapi.com",
"email": "[email protected]"
},
"license": {
"name": "Proprietary",
"url": "https://unifapi.com/legal/terms-of-service"
},
"x-api-version": "2026-07-01",
"x-versioning-policy": "https://unifapi.com/versioning.md"
},
"servers": [
{
"url": "https://api.unifapi.com",
"description": "Production"
}
],
"externalDocs": {
"url": "https://docs.unifapi.com",
"description": "UnifAPI developer documentation"
},
"security": [
{
"bearerAuth": []
}
],
"tags": [
{
"name": "browser",
"description": "Headless browser rendering. Render any URL with JavaScript executed and get it back as Markdown, fully rendered HTML, a screenshot, or the page's link graph."
},
{
"name": "events",
"description": "Live events search. Responses include individual events with title, dates, venue location, ticket links, and a description."
},
{
"name": "geo",
"description": "geo endpoints"
},
{
"name": "hacker-news",
"description": "Public-data Hacker News endpoints. Item, user, story-list, max-item, and update resources follow the official Hacker News API shape."
},
{
"name": "hotels",
"description": "Live hotel search and detail. Responses include ranked hotel listings and full hotel profiles with class rating, guest reviews, images, and nightly prices."
},
{
"name": "instagram",
"description": "Public-data Instagram endpoints. Path keys use URL-visible slugs (`username` for users, `shortcode` for posts). `media_id` and `user_id` are surfaced on responses so callers can cache the mapping."
},
{
"name": "linkedin",
"description": "Public-data LinkedIn endpoints. Path keys use LinkedIn URL slugs (`public_identifier` for users, `universal_name` for companies)."
},
{
"name": "local",
"description": "Live Local Finder search â the expanded local-pack listing. Responses include ranked local places with address, rating, phone, and booking links."
},
{
"name": "maps",
"description": "Live local business search. Responses include ranked place listings with address, rating, category, phone, coordinates, and place id."
},
{
"name": "news",
"description": "Live news search. Responses include ranked news articles and top-stories blocks with publisher domain, snippet, image, and publish time."
},
{
"name": "reddit",
"description": "Public-data Reddit endpoints (APP surface). Path keys use `username` for users, `subreddit_name` for subreddits, and `post_id` (the `t3_*` fullname) for posts."
},
{
"name": "seo",
"description": "Live SEO optimization evidence endpoints. SERP and AI SERP responses include ranked result elements, target visibility, competitor domains, rich search features, People Also Ask context, AI answer citations, query metadata, and source task status."
},
{
"name": "threads",
"description": "Public-data Threads endpoints (Web surface). Path keys use `username` for users and `post_id` for posts."
},
{
"name": "tiktok",
"description": "Public-data TikTok endpoints. All identity-shaped responses use the canonical Video / User / Comment / Music / Hashtag / LiveRoom shapes."
},
{
"name": "x",
"description": "Public-data Twitter / X endpoints. Public paths follow X-style `/x/...` semantics; use `username` for handle lookups, numeric X user `id` for user sub-resources, and tweet `id` for post lookups."
},
{
"name": "youtube",
"description": "Public-data YouTube endpoints (Web surface). Path keys use `channel_id` for channels and `video_id` for videos."
}
],
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"description": "UnifAPI API key. Provider credentials are managed by UnifAPI."
}
},
"schemas": {
"ErrorResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/components/schemas/Error"
}
},
"required": ["error"],
"description": "Standard gateway error envelope (ADR 0003 and ADR 0008)."
},
"Error": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"validation_error",
"invalid_id",
"insufficient_credits",
"unauthorized",
"not_found",
"rate_limited",
"internal_error",
"response_shape_error",
"upstream_error",
"upstream_unavailable"
],
"description": "Closed vocabulary - see docs/adr/0003-error-model.md."
},
"message": {
"type": "string"
},
"request_id": {
"type": "string",
"description": "UnifAPI request id, e.g. `unif_