Built for lean teams,
scaled for category leaders
Successfully submitted!
Error! Please try again
One REST API, at a predictable address. The SDKs, the CLI, and the MCP server are interfaces over it — every one of them ends up calling the same endpoints you can call yourself.
# Every endpoint except POST /accounts takes an API key
curl https://api.growsurf.com/v2/campaigns \
-H "Authorization: Bearer $GROWSURF_API_KEY"The universal surface. Create and manage teams, programs, participants, referrals, and rewards from your own server. Every endpoint except POST /accounts takes an API key in an Authorization: Bearer header, and you create and scope keys in GrowSurf Settings.
Base URL
https://api.growsurf.com/v2The machine-readable contract for the REST API, in OpenAPI 3.1, generated from the same source the API runs on and served same-origin so a client never has to guess a location. No API key is needed to read it.
Connect an AI assistant to GrowSurf over the Model Context Protocol. The hosted server authenticates with OAuth, so your assistant never handles an API key; the same tools also run locally over stdio. It is an interface over the REST API, not a separate product — if your assistant can send HTTPS requests, you do not need it.
Hosted server
https://mcp.growsurf.comThe official CLI ships in the same npm package as the local MCP server, so one install covers both. Set GROWSURF_API_KEY and run it.
Command
npx -y @growsurfteam/growsurf-mcpFive hand-maintained libraries wrap the same REST API. If one exists for your language, prefer it over generating a client from the spec.
For browser-side work, use the JavaScript SDK. For apps, use the native iOS and Android SDKs.
Libraries
If you are an AI agent rather than a person, start with these. They are written to be executed, not read for pleasure.
Drop the trailing slash and append .md. This page is served as prose at growsurf.com/developers.md.
Machine-readable