API reference
Programmatic access to Skalyn for AI agents and scripts. The same API key works on /api/v1/* and the endpoints the app uses.
OpenAPI 3.1 spec (openapi.json) · machine discovery (meta)
Authentication
Create an API key in your account (Account → API keys), or programmatically via signup + bootstrap (below). Send it as a bearer token on every request. Keys can do everything you can except delete your account or projects, manage billing, or use admin tools.
Authorization: Bearer wgtm_sk_...Signing up (two doors)
The free tier is created in the browser (CAPTCHA-verified at /login). API signup — no CAPTCHA, ever — always succeeds but starts unactivated: zero entitlements until a paid plan is activated through checkout. GET /api/v1/me shows an activation block with the checkout pointer while the account is locked.
# Sign up (202 confirmation_required — never a key here)
curl -X POST https://skalyn.ai/api/v1/signup \
-H "Content-Type: application/json" \
-d '{"email":"agent@yourdomain.com","password":"...","acceptTerms":true}'
# Extract token_hash from the confirmation email link, then mint your key.
# The response is shown once; retries within 15 minutes replay it verbatim.
curl -X POST https://skalyn.ai/api/v1/keys/bootstrap \
-H "Content-Type: application/json" \
-d '{"tokenHash":"TOKEN_HASH","name":"my-agent"}'Quickstart
The launch pipeline, end to end:
# 1. Discover the API (no auth)
curl https://skalyn.ai/api/v1/meta
# 2. Check your plan, limits, and remaining daily runs
curl -H "Authorization: Bearer wgtm_sk_..." https://skalyn.ai/api/v1/me
# 3. Create a project from onboarding answers
curl -X POST https://skalyn.ai/api/v1/projects \
-H "Authorization: Bearer wgtm_sk_..." \
-H "Content-Type: application/json" \
-d '{"name":"Acme","onboarding":{"businessName":"Acme","productDescription":"...","problemSolved":"..."}}'
# 4. Confirm onboarding, then run each pipeline step (blocks up to ~5 min)
curl -X POST https://skalyn.ai/api/v1/projects/PROJECT_ID/confirm -H "Authorization: Bearer wgtm_sk_..."
curl -X POST https://skalyn.ai/api/v1/agents \
-H "Authorization: Bearer wgtm_sk_..." -H "Content-Type: application/json" \
-d '{"projectId":"PROJECT_ID","agentType":"market-strategist"}'
# 5. Approve the completed run to advance the pipeline
curl -X PATCH https://skalyn.ai/api/v1/agents \
-H "Authorization: Bearer wgtm_sk_..." -H "Content-Type: application/json" \
-d '{"runId":"RUN_ID","action":"approve"}'
# 6. After the last step, export the launch pack, then enter the weekly
# growth loop (plan → generate → approve → retro).
curl -X POST https://skalyn.ai/api/v1/projects/PROJECT_ID/growth/start -H "Authorization: Bearer wgtm_sk_..."Long calls (run / plan / generate) run synchronously and can take up to ~5 minutes. If your client times out, the work still completes server-side — poll GET /api/v1/projects/{id} until the run settles.
Plans & limits
| Plan | Price | Projects | Runs / day | Exports |
|---|---|---|---|---|
| free | Free | 1 | 15 | No |
| pro | $24/mo | 1 | 40 | Yes |
| studio | $89/mo | 10 | 100 / project | Yes |
Hitting a lock returns 402 with an upgrade block telling you exactly how to get a Stripe Checkout link — hand it to a human or drive the browser to complete the upgrade.
Errors & limits
Every non-2xx response is JSON with at least an error string, plus a machine code and retryable where relevant. Authenticated responses carry an X-Request-Id header.
| Status | Meaning |
|---|---|
| 400 | Invalid request body or parameters. |
| 401 | Missing or invalid API key. |
| 402 | Plan lock — body includes an upgrade/checkout pointer. |
| 404 | Not found, or not yours. |
| 409 | Conflict — an agent is already running, or the step isn't current. |
| 429 | Rate / daily-run / hourly-write limit. See Retry-After + X-RateLimit-*. |
A 402 lock body:
{
"error": "Project limit reached. ...",
"code": "upgrade_required",
"feature": "projects",
"upgrade": {
"plans": ["studio"],
"checkout": { "method": "POST", "path": "/api/v1/billing/checkout", "body": { "plan": "studio" } },
"pricingUrl": "https://skalyn.ai/pricing",
"docsUrl": "https://skalyn.ai/docs/api#billing"
}
}On a 429, Retry-After is the seconds to wait (to UTC midnight for the daily run cap, one hour for write limits).
MCP
The API is also exposed as a remote MCP server at https://skalyn.ai/api/mcp (streamable HTTP; private beta, API-key auth). Tools wrap the same service layer as the endpoints below — identical plan gates, caps, and replay behavior. Connect with claude mcp add --transport http skalyn https://skalyn.ai/api/mcp --header "Authorization: Bearer wgtm_sk_...".
Endpoints
All paths are under https://skalyn.ai. The full request/response schemas are in the OpenAPI spec.