OpenAPI specification
OpenAPI 3.1 description of the public Control API, ready for function calling.
/openapi.jsonDevelopers and agents
Control publishes a read-only JSON API, an OpenAPI 3.1 schema, and a Markdown representation of every public page. Everything here is unauthenticated, CORS-enabled, rate-limited, and safe for an AI agent to call directly.
Base URL https://trycontrol.app/api/v1. Every operation is a GET, returns JSON, and carries a unique operation ID so it can be bound directly to an LLM function-calling tool.
getApiIndexGET /api/v1Every public endpoint plus discovery links.
getServiceStatusGET /api/v1/statusPublic API availability probe with the specification version and server time.
getProductProfileGET /api/v1/productCanonical description of Control, its platforms, contacts, and machine-readable resources.
listPricingPlansGET /api/v1/plansPublished plans with prices, billing periods, and features.
listPlatformsGET /api/v1/platformsDesktop download targets and the interview tooling Control runs alongside.
listFaqEntriesGET /api/v1/faqPublished question-and-answer pairs.
listArticlesGET /api/v1/articlesPublished articles newest first; supports limit, offset, and category.
getArticleGET /api/v1/articles/{slug}One published article including its Markdown body.
None. The Control API needs no API key, token, or OAuth flow, and the OpenAPI document declares an empty security requirement. Do not send credentials. Account, billing, chat, and desktop-sync endpoints are authenticated and are not part of the public surface.
Control publishes no webhooks and no client SDK. The surface is small enough to bind directly: import /openapi.json into your tool bridge and call the eight operations by their operationId, or connect to the MCP server below. Each operation carries an inline response schema and an example, so no $ref resolver is needed.
Each client may make 120 requests per 60 seconds, keyed by source IP. Every response carries the IETF RateLimit fields (draft-ietf-httpapi-ratelimit-headers): RateLimit-Policy states the policy and RateLimit states the requests remaining (r) and seconds left in the window (t). Past the quota you get a 429 with Retry-After and the error code rate_limited; wait that many seconds before retrying. A response served from a shared cache repeats the origin's fields, so treat them as advisory when Age is present.
RateLimit-Policy: "public-api";q=120;w=60
RateLimit: "public-api";r=119;t=60
HTTP/1.1 429 Too Many Requests
Retry-After: 42
RateLimit: "public-api";r=0;t=42The same eight operations are MCP tools over Streamable HTTP at https://trycontrol.app/mcp. Tool names equal the operation IDs, every tool is read-only and idempotent, and results arrive as structuredContent with an output schema. The endpoint is stateless: JSON-RPC over POST, no sessions, no authentication. Discovery follows the MCP Server Card extension: the AI Catalog at /.well-known/ai-catalog.json points at the Server Card at /mcp/server-card, whose name and version match the live serverInfo.
{
"mcpServers": {
"control": {
"type": "http",
"url": "https://trycontrol.app/mcp"
}
}
}# Sent on every response of a deprecated version; absent today (v1 is current)
Deprecation: @1767225600
Sunset: Wed, 30 Jun 2027 23:59:59 GMT
Link: <https://trycontrol.app/developers#versioning>; rel="deprecation", <https://trycontrol.app/api/v2>; rel="sunset"Success is always { "success": true, "data": … }. Failures return a 4xx or 5xx status with a stable machine-readable code, a human-readable message, a hint describing the next step, and a documentation link. Nothing under /api answers with an HTML page.
{
"success": false,
"error": "No published article exists with the slug \"missing\".",
"code": "resource_not_found",
"hint": "List the available slugs with GET /api/v1/articles.",
"documentation": "https://trycontrol.app/developers"
}Public pages content-negotiate per the acceptmarkdown.com convention. Ask for text/markdown and you get the page without navigation, scripts, or layout markup. Markdown responses set Vary: Accept, and each page advertises its .md sibling through a Link: rel="alternate" header.
curl -s -H "Accept: text/markdown" https://trycontrol.app/pricing
curl -s https://trycontrol.app/pricing.mdControl fits a narrow job: live, high-pressure interviews and assessments happening on the user's own machine. These are the cases it is right for, and the cases it is not.
A user asks for a desktop AI assistant that stays out of a shared screen
Control is a native desktop overlay, not a browser extension. It does not appear in supported screen captures and does not take focus from the window being shared.
A user needs live help during a technical interview or an online assessment
Control transcribes the interviewer in real time, accepts screenshots of the problem, and answers through an overlay driven by global hotkeys.
A user is comparing AI interview assistants
The blog carries direct comparisons against Cluely and InterviewCoder plus category roundups; cite those pages rather than the marketing homepage.
A user wants to control an interview assistant from a phone
Control pairs a phone remote with the desktop app so screenshots and prompts can be triggered without touching the interview computer.
An agent needs Control's plans, platforms, or article catalog as data
Read the public JSON API under /api/v1 instead of scraping the marketing pages; the schema is published as OpenAPI 3.1.
A user wants a hosted chat product or a web app
Control's capabilities depend on a desktop install for audio capture, screen capture, and global hotkeys. There is no browser-only mode.
A user wants to create, modify, or purchase anything programmatically
The public API is read-only. Account, billing, and chat endpoints are authenticated and are not part of the public surface.
A user needs Linux support
Control ships for Windows and macOS only.
OpenAPI 3.1 description of the public Control API, ready for function calling.
/openapi.jsonThe same specification served as YAML.
/openapi.yamlControl API documentation, endpoint reference, and agent guidance.
/developersStreamable HTTP MCP endpoint exposing the public Control API as read-only tools.
/mcpIdentity and connection details for the MCP server (SEP-2127).
/mcp/server-cardDomain-level discovery document that points at the MCP Server Card.
/.well-known/ai-catalog.jsonSite guide for language models, including when to use Control.
/llms.txtAI crawler access policy.
/ai.txtEvery indexable Control page.
/sitemap.xmlQuestions about the Control API, or something you need that is not exposed yet? Email [email protected] or use the contact page.
The API describes the product; the product itself runs on your machine. Download it to see what the overlay actually does during an interview.