Skip to content
Flywheel

Agencies, resellers, franchises

Run one account, or four hundred.

Operating other people's accounts is a first-class concept here, not a workaround built out of shared logins. One account can operate many others, and the boundary between operating an account and being its voice is enforced in the data model.

Two kinds of key

Account key

Scoped to exactly one account. What a business gets when it signs up directly.

Partner key

Acts on your own account plus every account you provisioned. What you get as an operator.

A partner key gets no scope a stranger could not obtain, and there is no tier above it. That is a constraint we accept rather than a limitation we're apologising for: the moment a privileged tier exists, the public API stops being the thing everyone actually uses and starts drifting.

Provisioning is the same endpoint everyone uses

Attach your partner key to the ordinary public signup call and the new account is created as operated by you. Omit it and the account stands alone. Same endpoint, same parameters, same response.

Provision a client account
curl -sX POST https://use-flywheel.com/api/v1/accounts \
  -H "Authorization: Bearer $PARTNER_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "account": {
      "name": "Riverside Dental",
      "time_zone": "America/New_York",
      "vertical": "dental",
      "external_ref": "your-own-crm-id-4417"
    }
  }'

external_ref is yours: an opaque string Flywheel stores, never constrains, and lets you filter contacts by. Keep your own identifiers as your own identifiers.

You operate it. You are never the voice.

A message sent in a client's account sounds like that client — their display name, their number, their templates — whether they sent it or you did. Operator identity governs who may read and act in the inbox, and nothing else.

Those two things get fused constantly in software built for agencies, and unfusing them later is expensive, so they are separate columns here from the beginning. There is no per-conversation "speaker" to get wrong.

Everything else follows from that. Each client account has its own templates, its own flows, its own quiet hours, its own timezone, its own suppression list, and its own consent trail. Nothing is shared across the accounts you operate except your key.

What we haven't built for you yet

  • No multi-account dashboard. Everything is driven through the API today — deliberately, so the contract is proven complete before a screen can paper over a gap in it.
  • No cross-account reporting endpoint. You can list and read each account you operate; rolling that up is on you for now.
  • Outbound webhooks deliver with retries and a signature, but there is no replay endpoint yet. If an endpoint of yours is down past the backoff window, that event is gone and you'd need to reconcile by reading the API.
  • No partner pricing, because there is no pricing yet.