Skalyn for AI agents
Skalyn is an AI marketing platform that turns a solo founder's onboarding answers into a complete launch pack, then runs their marketing week after week with an approve-first AI copilot.
Skalyn is built for two kinds of user: solo founders, and the AI agents that do their growth marketing. Everything the app does is a documented REST API — an agent authenticates with an API key and drives the same endpoints, under the same plan limits, as a human.
/api/v1/meta · OpenAPI 3.1 spec · full API reference · llms.txt
What you can automate
A 5-agent launch pipeline (Market Strategist, Brand Architect, Launch Strategist, Website Copy, Launch Assets) turns a project’s onboarding answers into a complete launch pack. After launch, a weekly Growth Engine plans the week, drafts every piece, and assigns founder tasks. You approve every plan and draft; nothing publishes on its own.
Sign up & authenticate
Two doors, documented honestly: the free tier is created in the browser (sign up at /login, CAPTCHA-verified), while API signup starts on a paid plan — a programmatic account always succeeds but begins unactivated (zero entitlements) until checkout completes. No CAPTCHA is ever asked on the API door.
# 1. Sign up (no captchaToken → the API door; always 202, never a key here)
POST /api/v1/signup {"email":"...","password":"...","acceptTerms":true}
# 2. Extract token_hash from the confirmation email link, then get your key
POST /api/v1/keys/bootstrap {"tokenHash":"...","name":"my-agent"}
# 3. See the paid-only state + checkout pointer, hand the URL to your human
GET /api/v1/me → activation.checkout
POST /api/v1/billing/checkout {"plan":"pro"}Send the key on every request:
Authorization: Bearer wgtm_sk_...The bootstrap confirms your email and returns the key exactly once — retries within 15 minutes replay the identical response, so a lost reply never strands it. Human-owned accounts mint keys in /account instead. A key can do everything you can except delete your account or projects, manage billing, or use admin tools.
Drive it end to end
The core loop, in order. Full request/response schemas are in the OpenAPI spec.
# Discover the API (no auth), then check your plan & remaining runs
curl https://skalyn.ai/api/v1/meta
curl -H "Authorization: Bearer wgtm_sk_..." https://skalyn.ai/api/v1/me
# Create a project, confirm onboarding (advances it into the pipeline), then run
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":"..."}}'
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"}'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.
MCP (Model Context Protocol)
Prefer tools over raw REST? The same product is a remote MCP server at https://skalyn.ai/api/mcp (streamable HTTP, stateless; private beta). Authenticate with the same API key:
claude mcp add --transport http skalyn https://skalyn.ai/api/mcp \
--header "Authorization: Bearer wgtm_sk_..."The ~20 tools mirror the REST loop — create_project → confirm_onboarding → run_pipeline_step → review_run, then start_growth → plan_week → generate_item → submit_retro — plus reads, get_usage, and create_checkout_link for the payment handoff. Same plan gates, caps, and replay guards as REST. Key auth only for now; OAuth for public MCP hosts comes later.
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 |
Errors & rate limits
Every non-2xx response is JSON with at least an error string, plus a machine code and retryable where relevant.
| Status | Meaning |
|---|---|
| 400 | Invalid request body or parameters. |
| 401 | Missing or invalid API key. |
| 402 | Plan lock — the body carries an `upgrade` block with a 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-*. |
On a 429, Retry-After is the seconds to wait (to UTC midnight for the daily run cap, one hour for write limits).
Paying (checkout handoff)
Hitting a plan lock returns 402 with an upgrade block. POST its checkout pointer to get a Stripe Checkout URL, then hand that URL to your human — plan changes only take effect after they complete checkout. See /pricing for the plans.
Machine-readable
- /docs/api — Human-readable REST docs: authentication, quickstart, plan limits, and the full error contract.
- /api/v1/openapi.json — Machine-readable description of every /api/v1 operation, request body, and error response.
- /api/v1/meta — A no-auth JSON card: product, live pricing, the endpoint index, and how to authenticate.
- /api/mcp — Remote MCP server (streamable HTTP, private beta): connect an MCP host with your API key and drive the whole product as tools.
- /pricing — Plans and monthly prices.
- /llms.txt — the discovery index, and /llms-full.txt for the full guide.