一键导入
my-funnel-api
Create and publish websites (funnels) to the edge. Push raw HTML to any slug and it goes live instantly on your org's domain or preview subdomain.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create and publish websites (funnels) to the edge. Push raw HTML to any slug and it goes live instantly on your org's domain or preview subdomain.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Deploy JavaScript functions to the MyAPI edge runtime (Cloudflare Workers). Register a function, upload a single-file JS bundle, get a live HTTP invocation URL or run it on a cron schedule. Each function gets a scoped capability key for cross-slot calls.
Take payments via Stripe — one-off or recurring. Connect your own Stripe account, then create hosted Stripe Checkout URLs. No raw card data ever touches your code.
Tracking pixel + identity resolution for MyAPI funnels and email. Capture visits and events, resolve known users to anonymous sessions, stream interaction events for analytics. Pairs with mycrmapi for auto-ingest of pixel_visit events on known contacts.
Auth, organizations, and billing hub. Start here to get an api_key and org_id — every other service depends on both.
Saved audiences = named Goldfox-filter snapshots over the people or company database. Build a target list once, name it, reuse it across campaigns, refresh to re-evaluate against current data. The persistence layer on top of my-people-api + my-company-api.
Register new domains and manage edge settings. Required before a funnel can go live on a custom URL.
| name | my-funnel-api |
| version | 1.0.0 |
| description | Create and publish websites (funnels) to the edge. Push raw HTML to any slug and it goes live instantly on your org's domain or preview subdomain. |
| triggers | ["funnel","landing page","website","page","publish","push","slug","html","edge","preview subdomain","makeautonomous"] |
| checksum | sha256-pending |
A funnel is a website tied to an org. Push raw HTML pages to slugs and they're served from the edge immediately — no build pipeline, no deploy queue.
Funnels are the publishing surface. You create a funnel under an org (one command), then funnel push raw HTML to any slug (/, /about, /pricing, etc.). The edge serves the page within seconds — no CI/CD, no build, no deploy queue.
Before you push, know where you're writing. funnel push and funnel publish --env prod overwrite whatever is live at the target — no undo. An org may already host a real site; pushing / onto it replaces the homepage. See Namespace & safety below — this is the #1 way agents wreck an existing site.
By default, your funnel lives on a free preview subdomain (*.makeautonomous.com) you get with every org. To serve on a custom domain, register and assign one via mydomainapi first.
Every funnel auto-provisions a webhook at creation time (org_webhook_id). The funnel exposes two public proxy endpoints your HTML can call directly (no API key needed): a form submit at POST /funnel/funnels/{id}/submit/{slug} that delivers submissions through that webhook (CRM upsert + bound workflows fire automatically), and an analytics/event ingest for pageviews and click tracking. For multi-form funnels you can bind individual slugs to specific destinations with myapi funnel form ... --capture-to webhook:<id>.
| Command | What it does |
|---|---|
myapi funnel create | Create a funnel in the default org |
myapi funnel list | List all funnels with preview/domain URLs |
myapi funnel get <id> | Inspect a funnel's metadata + preview URL |
myapi funnel delete <id> | Delete the funnel and purge its edge pages |
myapi funnel push [slug] | Push HTML from stdin to a slug (default: /). Overwrites an existing page — refused without --force. --json prints {slug, subdomain_url, overwritten, org_id, funnel_id} |
myapi funnel publish <dir> | Upload a whole directory as the funnel's site (--env dev|prod, default prod; --api-fn <id>; --json). Prod refuses to replace a live site without --force |
myapi funnel pages [funnel_id] | List the pages currently published to a funnel |
myapi funnel form [funnel_id] | Emit canonical form HTML (and register a binding with --capture-to) |
myapi funnel verify [slug] | Verify a published page is reachable + check links/webhooks |
A write targets a (org, funnel, slug) address. Get all three right before pushing — the CLI will help, but the thinking is yours:
--org (or default_org) decides whose namespace you touch. For a demo or a new project, pass --org <id> explicitly every time — don't trust the ambient default. myapi org list shows the orgs you can reach.myapi funnel list --org <id> shows the org's funnels; myapi funnel pages --funnel <id> shows what's already published. If a slug is taken by something real, you're about to replace it.myapi funnel create --name <demo> --org <id> gives you a clean namespace and its own preview subdomain.push/publish auto-pick it — convenient, but it's how a demo lands on the wrong site. Pass --funnel <id> (or set a default) so the target is explicit, not inferred.The CLI backstops you: push refuses to overwrite an existing slug (and publish --env prod refuses to replace a live site) without --force, and both print the resolved org + funnel on success.
# New demo, done safely — explicit org, fresh funnel, confirm, then push
myapi org list # which orgs can I reach?
myapi funnel list --org <org_id> # what already lives here?
myapi funnel create --name acme-demo --org <org_id> # clean namespace for the demo
echo '<h1>Hello</h1>' | myapi funnel push / --funnel <new_funnel_id>
# Push multiple pages to that funnel
cat about.html | myapi funnel push /about --funnel <new_funnel_id>
cat pricing.html | myapi funnel push /pricing --funnel <new_funnel_id>
# Inspect what's published before touching an existing funnel
myapi funnel pages --funnel <funnel_id>
myapi funnel verify /pricing --funnel <funnel_id>
# Deliberately replace a live page (only after confirming it's the right target)
cat new-home.html | myapi funnel push / --funnel <funnel_id> --force
# Clean up
myapi funnel delete <funnel_id> --org <org_id>
Omitting [slug] defaults to /. The funnel id is resolved from --funnel, the saved default funnel, or — only if the org has exactly one funnel — auto-picked; pass --funnel to be sure. push --json returns the live URL as subdomain_url — no follow-up funnel get needed.
The funnel submit proxy is the canonical form-capture path. Never hardcode https://api.mywebhookapi.com/webhook/in/<slug> into funnel HTML — that URL leaks into your git history, breaks on rotation, gets scraped, and locks the platform out of future form-quality features (rate-limit, captcha, anti-bot, field validation). Use the proxy instead — same plumbing, hidden URL, automatic CRM ingest on email.
Zero-config form (the happy path most agents want) — still pin the org + funnel so the snippet and the page land in the namespace you mean (see Namespace & safety):
myapi funnel create --name acme-demo --org <org_id>
myapi funnel form --slug join --fields email:required,name --funnel <funnel_id> > snippet.html
# paste snippet.html into your page (or pipe through funnel push):
cat page-with-snippet.html | myapi funnel push / --funnel <funnel_id>
# Submissions land in the funnel's auto-provisioned webhook → CRM upsert on `email` → any bound workflow fires.
funnel form always registers a per-slug binding (idempotent on repeat). Without --capture-to it auto-targets the funnel's org_webhook_id — same destination as the fallback, with server-side honeypot + field validation turned on.
Multi-form funnel (each slug to a different destination):
# Bind /checkout to a specific webhook:
myapi funnel form <funnel_id> --slug checkout \
--fields email:required,plan,phone:tel \
--capture-to webhook:<checkout_webhook_id>
# Bind /survey to a workflow directly:
myapi funnel form <funnel_id> --slug survey \
--fields email:required,score:number \
--capture-to workflow:<survey_workflow_id>
--capture-to registers the per-slug binding via POST /funnel/orgs/.../funnels/{id}/forms. Without it, submissions fall through to the funnel's default webhook.
POST /funnel/funnels/{id}/event — public proxy for pageviews, clicks, and pixel events (no API key needed). Rate-limited to 60 req/min per funnel.
myapi config set-org <id> and myapi config set-funnel <id> to skip flags on every command — but a stale default is exactly how a push lands on the wrong org/funnel. For demos and one-offs, pass --org/--funnel explicitly instead of relying on whatever default was set last.--force means "yes, replace the live page/site" — confirm the (org, funnel, slug) target first; don't use it to silence the overwrite error.402 INSUFFICIENT_FUNDS → top up (myapi billing topup) or enable myapi billing auto-recharge.Run myapi funnel --help or myapi funnel <subcommand> --help for full flag reference.