From product to platform: APIs, webhooks and partners
What should a SaaS company know about platform strategy before opening its APIs to partners?
A platform exposes what your product does through APIs and webhooks so partners build on it; design for it early, build it when demand exists. The sequence that works is an internal API first, webhooks for the events partners ask about, then a public launch with keys, quotas, docs and a partner programme.
SaaS platform strategy is the decision to let other people build on your product rather than only use it. A platform exposes what the product does through APIs and webhooks so partners, customers and integrators can extend it without asking you. It is worth designing for early, because the choices that make it possible are cheap at the start and expensive later. It is not worth building fully until someone is actually asking for it. This article explains what a developer platform consists of, how to sequence it, what it costs to run, and how to tell whether your product has earned one.
What a SaaS platform actually is
Three layers turn a product into a platform. The first is a public API: authenticated, versioned, documented endpoints that let another system read and write the same objects your UI does. The second is webhooks: signed HTTP callbacks that tell a partner something happened, so they do not have to poll. The third is the ecosystem around them: developer accounts, keys, quotas, a changelog, sandbox tenants, and a partner listing so customers can find what has been built.
A product with a private API used only by its own front end is not a platform. Neither is a product with a Zapier connector and nothing else. The test is simple: can a partner you have never spoken to read your docs, get a key, build something useful and ship it to a shared customer without a call? If yes, you have a platform.
When to build it: demand signals worth trusting
One mistake is building the developer platform before anyone needs it and maintaining it for years. The opposite is refusing every integration request until a large customer makes it a renewal condition. The signals that justify the investment are concrete:
- Three or more customers have asked for the same export, sync or trigger in the last quarter
- A sales cycle has stalled on "does it integrate with our CRM / ERP / data warehouse?"
- Your own team has built two or more one-off integrations by hand and now maintains them
- A partner has offered to build against you if you give them a stable endpoint
- Customers are scraping your UI or exporting CSVs on a schedule to get data out
Any two of these is enough to open a scoped public API. All five means you are already late and the work should start this quarter. We cover the wider set of decisions for SaaS companies on the industry page, including multi-tenancy and billing, both of which shape the API you can safely expose.
The three stages compared
| Stage | What you build | Who uses it | What it costs to run |
|---|---|---|---|
| Internal API | Versioned REST or GraphQL layer that the UI calls; every action goes through it; events emitted to a bus | Your own front end and mobile apps | Nothing extra beyond good engineering; this is the foundation |
| Scoped public API and webhooks | A subset of endpoints with API keys, rate limits, docs, a sandbox tenant and signed webhooks for the top five events | A handful of customers and one or two integrators | One engineer part-time on support and versioning; docs upkeep |
| Developer platform and partner programme | Self-serve developer accounts, OAuth for third-party apps, app listing, changelog, deprecation policy, partner tiers | Independent developers and partners you have not met | A named platform owner, a support queue, review of listed apps, and a real deprecation process |
Designing the internal API so it can become public
The cheapest platform decision is to make your own UI a client of the same API you might later publish. It forces the API to be complete, it makes permission checks live in one place, and it means every feature ships API-ready without extra work. Our API-first SaaS article goes into the design detail; the points that matter for platform strategy are these.
Stable object identity
Partners will store your IDs. If a migration renumbers objects, every integration breaks at once. Use opaque, permanent identifiers and never reuse them.
Permissions at the API, not the screen
If a role restriction is enforced only in the front end, the public API will leak. Role and tenant checks belong in the API layer, and the same checks apply whether the caller is your UI, a partner app or an AI agent acting for a user. The SSO, RBAC and audit logs post covers how to structure that.
Events as a first-class output
Every state change should emit an event with a type, a timestamp, the object ID and enough payload to act on. This is what webhooks, analytics and audit trails are built from later. Retrofitting events into a codebase that mutates state in fifty places is the most expensive part of a late platform build.
Webhooks: the part partners actually ask for
Most integration requests are really requests for a webhook. A partner rarely wants to poll your list endpoint every minute; they want to be told when an order is created, a ticket closes or a payment fails. Webhooks are simple in concept and unforgiving in practice. The rules that keep them reliable:
- Sign every payload with a per-endpoint secret so receivers can verify it came from you
- Retry with backoff for at least a day, and expose the delivery log so partners can see what happened
- Make deliveries idempotent with an event ID, because retries will duplicate
- Send the event and an ID, not the full object, when payloads could go stale in transit; let the receiver fetch the current state
- Let partners subscribe per event type and per tenant, and let customers see which partner receives which events
Stripe's webhook documentation is the reference most developers already know; matching its conventions lowers the learning curve for anyone integrating with you.
Public API launch: keys, quotas, docs and versioning
A public API launch is a product launch, not a deploy. Before the first key is issued you need per-key rate limits, a sandbox tenant with seeded data, reference docs generated from the actual schema, a getting-started guide that reaches a working call in under ten minutes, and a versioning policy that says how long an old version lives after a new one ships. Partners judge you on how you retire things, not on how you launch them.
Pricing the API is a separate decision; if AI features are involved, the metering has to cover model usage as well as calls, as described in usage metering and AI billing for SaaS.
The SaaS ecosystem: partner programmes that earn their keep
A partner programme is worth running when at least three partners are live and customers are asking which integrations exist. Below that number, a listing page and a shared Slack channel are enough. Above it, you need tiers, a review process for listed apps, co-marketing rules and a named owner. The onboarding flow for partners deserves the same attention as customer onboarding, a point we make in merchant and partner onboarding as a product.
A worked example
A field-service SaaS we worked with had a fast-growing customer base and a stack of integration requests: accounting exports, a CRM sync and a parts supplier that wanted job events. Each had been handled by a bespoke script maintained by whichever engineer wrote it. We began by putting the existing UI behind a versioned internal API and adding an event bus, which took most of the first phase but removed the fifty scattered state mutations. Signed webhooks for job created, job completed and invoice raised went out to the three requesting partners with a delivery log they could inspect themselves. The public API launched with keys, quotas and a sandbox; the parts supplier integrated without a single call. Because the copilot inside the product used the same API, its actions inherited the same permissions, which is described in the in-app copilot case study. The partner listing came a quarter later, once there were entries worth listing.
Team and timeline
Internal API and events: a lead engineer and one or two developers over four to eight weeks, depending on how much state-changing logic is scattered. Scoped public API and webhooks: the same team for three to five weeks, plus a technical writer for docs. Developer platform and partner programme: ongoing, with a named platform owner on your side. Our API development and integrations service starts at $7,000 / ₹4.4L for a scoped integration layer, and full platform builds sit under SaaS development from $31,500 / ₹20.8L. If the direction is unclear, a Sprint Zero discovery (10 working days, $3,250 / ₹2,00,000, credited to the build) produces the API surface, the event catalogue and a sequencing plan. Running costs after launch are typically covered by a Standard Care Plan. Details are on the pricing page.
Before you start: a checklist
- List every integration request from the last two quarters and group by object and event
- Confirm your UI calls an API you could publish, or plan the refactor
- Decide which five events partners will need first
- Choose the auth model: API keys for customers, OAuth for third-party apps
- Write the versioning and deprecation policy before launch
- Build a sandbox tenant with realistic seeded data
- Name the platform owner who answers partner questions
- Decide how the API is priced or included in plans
Glossary
- Public API: authenticated, documented endpoints available to customers and partners, with a stability promise
- Webhook: a signed HTTP callback your system sends when an event happens
- Deprecation policy: the published rule for how long an API version is supported after replacement
- Partner programme: the tiers, review and listing process for third parties building on your platform
Related reading
Read API-first SaaS for design detail, multi-tenant SaaS architecture for the tenancy decisions that constrain what you can expose, and the SaaS industry page for how we work with SaaS teams. Pricing for every service is on the pricing page.
Design for the platform from the first commit, build it when customers ask, and launch the partner programme only when there are partners to list.
Frequently asked questions
Should we use REST or GraphQL for a public API?
▾
REST is easier for partners to adopt and to rate-limit, and it maps naturally to webhooks. GraphQL suits products with deeply nested data and a small set of sophisticated integrators. Most SaaS platforms start with REST and add GraphQL only if partners ask.
How do we charge for API access?
▾
Three common models: include it in higher tiers, meter calls above a free allowance, or charge partners for listing and support. Pick the one that matches who gets the value; a customer syncing their own data should rarely pay per call.
What breaks most often after a public API launch?
▾
Webhook delivery and versioning. Partners miss events when retries are absent, and they break when a field is renamed without notice. Signed, retried webhooks with a delivery log and a written deprecation policy prevent most of it.