Before a metered service runs on platform credentials, someone in your organization has to accept its agreement.
This is not a formality. When you use a shared service, we are calling a third-party provider on your behalf and paying for it. The agreement is where that relationship, its cost and its rules are made explicit.
The base terms
Every platform-provided service carries the same base statement, plus a line specific to that service:
You'll use our built-in service, billed to your account by usage. You can switch to your own provider anytime. You're responsible for lawful use and the underlying provider's terms.
Three things are established in that one sentence: it is metered, you are not locked in, and the provider's own terms still bind you.
The four setup agreements
| Agreement | The service-specific line |
|---|---|
| Phone & SMS service | Calls and messages are billed per minute/message. |
| Email sending | You must only send to people who agreed to hear from you. |
| Shipping labels | Label costs are billed to your account. |
| AI features | Do not submit content you have no right to use. |
The per-provider agreements
Eight providers carry their own longer agreement covering acceptable use, billing and data handling:
OpenAI · Anthropic · Google Gemini · DeepSeek · Twilio · Amazon SES · Bulk email · EasyPost
Each states its markup explicitly. The Anthropic agreement, for instance, sets out that charges are based on input plus output tokens, that a 20% platform fee applies over Anthropic's base rates, and that input and output are priced differently — and links Anthropic's own acceptable-use policy, terms of service and privacy policy.
Each service record carries requiresAgreement, its agreementText and a longer documentation block, served through the catalog:
/service-pricing/catalogJWT/service-pricing/{service}JWTWhy it is required
Three things the agreement establishes:
You accept the provider's terms. Using a provider through us still means using that provider. Their acceptable-use policy and terms apply to what you send, and each agreement links them.
You accept the cost. The agreement states the platform markup for that service. Accepting it is accepting that rate.
You accept the usage rules. Some obligations are yours, not ours — email sending requires that recipients opted in; AI requires that you have the right to submit what you send.
What happens without acceptance
A call to a service with an unaccepted agreement is refused before anything runs. Nothing is sent, nothing is charged, and the response carries what the caller needs:
- The reason, as a stable code
- Which service it is for
- The agreement text itself
- Where to accept it
An alert is also raised, so the person who can accept it finds out rather than only the developer whose call failed.
An unaccepted agreement stops the service rather than running it and asking later. Nobody should be billed for a provider whose terms they have not seen.
Acceptance is recorded per service
Acceptance is stored against your organization, per service — not as one blanket agreement, because the terms genuinely differ. An SMS agreement and an AI agreement carry different obligations and different rates.
Once accepted, that service runs. Others still need their own.
Which services need one
Anything provisioned as shared or sub-account requires an agreement, because it runs on our credentials and our cost:
| Provisioning | Count | Agreement | Why |
|---|---|---|---|
| Bring your own | 29 | Not required | You already deal with that provider directly |
| Shared | 3 | Required | Runs on platform credentials — email sending, shipping labels, AI |
| Sub-account | 1 | Required | Phone & SMS, which provisions you an isolated sub-account |
All fifteen metered services require acceptance. See service rates for each one's markup.
Where to see what you have accepted
The setup catalog shows every service alongside its live status: what is switched on, what needs accepting, and what still needs credentials.