Build and run your company from your AI assistant. One API call, no browser.
Describe your business in plain language and Founden builds the full product (website, app, admin) in the cloud and returns a live link. Connect it to any AI assistant over MCP, or call the API directly. One API key, no browser to keep open.
One API key (omk_). The same key works across every O-mega product. No browser to keep open: builds run in the cloud and deploy automatically.
Step 1: Get your API key
Create a key in Founden's Settings, under Founden API. It starts with omk_.
Step 2: Connect your assistant, or start a build from your code
{
"mcpServers": {
"founden": {
"command": "npx",
"args": [
"-y",
"founden-mcp"
],
"env": {
"FOUNDEN_API_KEY": "omk_your_key"
}
}
}
}pip install founden
from founden import Founden
client = Founden("omk_your_key")
build = client.build("Build a booking site for my dental clinic with online payments")
for event in client.stream(build.execution_id):
print(event["event"], event["data"])npm install founden
import { Founden } from "founden";
const client = new Founden("omk_your_key");
const build = await client.build("Build a booking site for my dental clinic with online payments");
for await (const ev of client.stream(build.data!.execution_id as string)) {
console.log(ev.event, ev.data);
}curl -X POST https://founden.ai/v1/builds \
-H "Authorization: Bearer omk_your_key" \
-H "Content-Type: application/json" \
-d '{"prompt": "Build a booking site for my dental clinic with online payments"}'All four use the same key and the same credits.
API key authentication and rate limits
The Founden API uses Bearer token authentication. Include your API key in the Authorization header of every request.
Authorization: Bearer omk_your_key_hereAPI keys are created in Founden's Settings, under Founden API. A key drives your Founden account from your own apps and AI assistants and is tied to your account and credit balance. Keys can be revoked there at any time.
Rate limits
Default: 60 requests per minute per key. Rate limit headers are included in every response:
X-RateLimit-Remaining: 58
X-RateLimit-Limit: 60
X-RateLimit-Reset: 1713400060
X-Credits-Used: 2Per-capability credit pricing
A credit is a fixed amount of compute. Starting a build or sending it a message charges nothing up front (credits_used 0): the build is charged as it runs, for the compute it actually uses, so there is no fixed price per build (a build your desktop app picks up runs on your own Claude, ChatGPT or Google AI plan instead and spends desktop credits for what its AI use really costs). Reading status, streaming progress and stopping a build are free.
/v1/builds
MeteredStart a Founden build from a plain-language prompt
/v1/builds/{execution_id}
0 creditsGet build status and the live preview URL
/v1/builds/{execution_id}/message
MeteredSend a follow-up instruction to a running build
/v1/builds/{execution_id}/stop
0 creditsStop a running build
Credits are returned in the credits_used field and the X-Credits-Used response header.
Error handling and status codes
All errors follow RFC 7807 (Problem Details for HTTP APIs) with additional fields for agent consumption.
{
"success": false,
"error": {
"type": "https://api.o-mega.ai/errors/rate-limited",
"title": "Rate limit exceeded",
"status": 429,
"detail": "You have exceeded 60 requests per minute",
"is_retriable": true,
"retry_after_seconds": 42,
"alternative_action": "Reduce request frequency or contact support",
"error_category": "transient"
},
"credits_used": 0
}Error categories
Temporary issue. Safe to retry after retry_after_seconds.
Request is invalid. Do not retry with the same parameters.
API key is missing, invalid, or revoked.
Insufficient credits. Upgrade plan or enable overage.
The target content could not be accessed (blocked, CAPTCHA, etc).
HTTP status codes
Success. The request completed and data is in the response.
Bad request. Missing or invalid parameters.
Unauthorized. API key is missing or invalid.
Insufficient credits. Upgrade or enable overage.
Unprocessable. The request was valid but the operation failed (e.g. scrape blocked).
Rate limited. Retry after the specified interval.
Provider error. All upstream providers failed.
Unified response envelope
Every response uses the same format. This makes it easy for agents to parse responses uniformly.
{
"success": boolean,
"data": { ... } | null,
"error": { ... } | null,
"metadata": {
"response_time_ms": number,
"request_id": "string"
},
"credits_used": number
}Metadata fields
response_time_ms
number
Total wall-clock time for the request in milliseconds.
request_id
string
Unique request identifier for debugging and support.
Official packages for every integration method
Every package uses the same API key and hits the same backend. Pick whichever fits your stack.
MCP Server
$ npx founden-mcpFor Claude, Cursor and other MCP clients. Your assistant starts, follows and steers builds from chat.
Python SDK
$ pip install foundenSync and async clients: build, stream, status, message and stop.
TypeScript SDK
$ npm install foundenThe same calls for Node.js and any TypeScript project.
REST API
Works with any language or framework. Use curl or any HTTP client with a Bearer token.
Machine-readable formats
For auto-generating clients or configuring agent frameworks:
OpenAPI spec
/v1/openapi.json?product=foundenFiltered OpenAPI 3.1 spec with only the Founden endpoints.
Tool definitions
/v1/tools?product=founden&format=openaiPre-built tool schemas for OpenAI, Claude, and MCP. Formats: openai, claude, mcp, raw.
llms.txt
/llms.txtAI-readable documentation index for agent discovery.
Live build progress via SSE
Every build streams its progress as Server-Sent Events (SSE). Connect to the stream after starting a build.
GET /v1/builds/{execution_id}/stream
Authorization: Bearer omk_your_keyEvent types
A step of the build. Fields: step, status, and step-specific details (e.g. sandbox_init, preview_url).
The agent finished building. Fields: result with preview_url and sandbox_id. Deploy may still be finishing.
All work complete (build + deploy). Fields: vercel_url (the live site), github_repo, surface_changed.
The agent worked but the changes did not reach the live site (built outside the published app). Fields: execution_id, message.
The build failed. Fields: error.
Describe the business or app you want. Founden builds the full product in the cloud and returns an execution_id plus a stream URL for live progress.
Describe the business or app you want. Founden builds the full product in the cloud and returns an execution_id plus a stream URL for live progress.
Start a Founden build from a plain-language prompt
Parameters
prompt
Requiredstring
What to build or change, in plain language.
company_id
string
Target an existing company you own. Omit to use (or create) your default company.
Example response
{
"success": true,
"data": {
"execution_id": "1e04e65f-6ded-4731-bc14-a1b307403bf3",
"company_id": "6a1bc9a7bea382d028741c45",
"status": "running",
"stream_url": "/cloud-build/1e04e65f-6ded-4731-bc14-a1b307403bf3/stream"
},
"metadata": {
"request_id": "req_xyz789"
},
"credits_used": 0
}Poll a build by execution_id. Returns the current status and, once ready, the live preview URL.
Poll a build by execution_id. Returns the current status and, once ready, the live preview URL.
Get build status and the live preview URL
Parameters
execution_id
Requiredstring
The execution_id returned by build_company.
Example response
{
"success": true,
"data": {
"execution_id": "1e04e65f...",
"status": "completed",
"preview_url": "https://your-company.vercel.app"
},
"credits_used": 0
}Keep iterating in plain language. 'Add online booking.' 'Change the colors.' The change ships to your live site.
Keep iterating in plain language. 'Add online booking.' 'Change the colors.' The change ships to your live site.
Send a follow-up instruction to a running build
Parameters
execution_id
Requiredstring
The execution_id returned by build_company.
prompt
Requiredstring
Follow-up instruction for the running build agent.
Example response
{
"success": true,
"data": {
"status": "accepted",
"execution_id": "1e04e65f..."
},
"credits_used": 0
}Gracefully stop an in-progress build. Any work already committed is saved.
Gracefully stop an in-progress build. Any work already committed is saved.
Stop a running build
Parameters
execution_id
Requiredstring
The execution_id returned by build_company.
Example response
{
"success": true,
"data": {
"message": "Build stopped."
},
"credits_used": 0
}