Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.
openapi: 3.2.0
info:
title: Fanaura MCP API
version: 1.0.0
summary: Public website files, form posts, and the Fanaura MCP OAuth scopes.
description: 'This document describes the HTTP surface of https://www.fanaura.com and the OAuth scopes for the MCP server at https://app.fanaura.com/mcp. Request public pages with Accept: text/markdown when you want Markdown. Request only the MCP scope the task needs. Canonical protected-resource metadata for the MCP server is https://app.fanaura.com/.well-known/oauth-protected-resource. Authorization server metadata is https://app.fanaura.com/.well-known/oauth-authorization-server.'
servers:
- url: https://www.fanaura.com
description: Fanaura public website
tags:
- name: MCP
paths:
/mcp:
servers:
- url: https://app.fanaura.com
description: Fanaura MCP server
post:
operationId: callFanauraMcp
summary: Call the Fanaura MCP server
description: 'Streamable HTTP JSON-RPC for a signed-in Fanaura account. Request only the scope the task needs: journeys:read to read journeys, journeys:write to create or edit a journey, or audience:read to read contacts and audience totals. Use the authorization code grant with PKCE (S256). Dynamic client registration is available at the authorization server.'
security:
- fanauraMcpOAuth:
- journeys:read
- fanauraMcpOAuth:
- journeys:write
- fanauraMcpOAuth:
- audience:read
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/JsonRpcRequest'
responses:
'200':
description: A JSON-RPC result, or a stream of events when the server streams the reply.
content:
application/json:
schema:
type: object
additionalProperties: true
text/event-stream:
schema:
type: string
'401':
description: The bearer token is missing or was rejected. Request a least-privilege scope and retry.
tags:
- MCP
components:
schemas:
JsonRpcRequest:
type: object
required:
- jsonrpc
- method
properties:
jsonrpc:
type: string
const: '2.0'
id:
description: Request id. Omit it for a notification.
method:
type: string
params:
type: object
additionalProperties: true
securitySchemes:
fanauraMcpOAuth:
type: oauth2
description: OAuth 2.0 for https://app.fanaura.com/mcp. Authorization code with PKCE (S256). Request only the scope the task needs. Do not request every scope in this list.
flows:
authorizationCode:
authorizationUrl: https://app.fanaura.com/oauth/mcp/authorize
tokenUrl: https://app.fanaura.com/api/oauth/mcp/token
refreshUrl: https://app.fanaura.com/api/oauth/mcp/token
scopes:
journeys:read: Read journeys, keywords, destinations, and publish state on the signed-in account.
journeys:write: Create and edit journeys on the signed-in account. Publishing still requires an active membership and a connected Instagram account.
audience:read: Read contacts, timelines, and audience totals on the signed-in account.
revalidateSecret:
type: apiKey
in: header
name: x-revalidate-secret
description: Shared secret for the website cache hook. Not an OAuth scope.