S
supero.docs
Documentation/Integrations/Managed Integrations & Provider Catalog

Managed Integrations & Provider Catalog

Browse and wire up dozens of managed third-party providers — payments, messaging, identity, and data services — through one import, configure, execute lifecycle instead of hand-rolling an HTTP client for every vendor.

Overview

The managed services catalog is the primary way to connect a Supero app to a third-party provider. Instead of writing HTTP client code, storing credentials yourself, and handling retries, you import a catalog entry into your project, configure it with your provider credentials, and call it with one wire primitive: POST /api/v1/services/execute. The catalog spans roughly 38 providers across payments, messaging, identity and SaaS, and data — this page is a reference for what is in it and how to wire each one up.
This page assumes you are already familiar with importing and calling services in general — see the Transactional Services page for the underlying extends model, the state machine, and the shared execute contract. What is specific to this page is the external-provider half of the catalog: the providers here call out to a real third party (Stripe, Twilio, SendGrid, Okta, and so on) rather than mutating your own app data directly.
  • •Payments — Stripe, PayPal, Razorpay, PhonePe, Apple Pay, Google Pay, Plaid
  • •Messaging & notifications — SendGrid, SMTP, Twilio SMS/WhatsApp, Slack, push notifications, OTP
  • •Identity & SaaS — Okta, Salesforce, ServiceNow, QuickBooks, Google Workspace, GitHub, Bitbucket
  • •Data & observability — Datadog, Google Programmable Search, Amazon S3
  • •AI — call OpenAI or Anthropic directly using your own provider key
  • •Social & marketing — Instagram, Facebook, TikTok, X, LinkedIn, Google Ads, Google Business Profile (each requires the provider's own business/app verification before you can go live)

The Provider Catalog

Every entry below is a service_id you can pass to the import/configure/execute calls in the next section. Browse the live, authoritative list at any time with GET https://api.supero.dev/api/v1/services/catalog, or GET .../api/v1/services/catalog/{service_id} for one entry's full schema, operations, and config fields.

Payments

service_idProviderWhat it is for
billingStripeCharges, customers, subscriptions, invoices.
stripe_checkoutStripeHosted checkout sessions and payment links.
apple_payStripe-backedApple Pay, processed through your Stripe account.
google_payStripe-backedGoogle Pay, processed through your Stripe account.
billing_paypalPayPalPayPal Checkout — orders, captures, refunds.
billing_razorpayRazorpayUPI, cards, wallets, and net-banking.
billing_phonepePhonePePhonePe hosted checkout.
plaidPlaidBank account linking and verification.

Messaging & notifications

service_idProviderWhat it is for
emailSendGridTransactional email.
email_smtpAny SMTP hostTransactional email over your own SMTP server.
smsTwilioSMS.
whatsappTwilioWhatsApp messages and templates.
slackSlackPost messages and create channels in a workspace.
push_notificationFCMMobile push notifications, single-device or topic broadcast.
auth_otpConfigurable OTP providerOne-time-passcode issue/verify flows for login or step-up auth.

Identity & SaaS

service_idProviderWhat it is for
oktaOktaIdentity/SSO administration.
salesforceSalesforceCRM records — leads, contacts, opportunities.
servicenowServiceNowITSM records — incidents, requests.
quickbooksIntuit QuickBooksAccounting — invoices, customers, payments.
google_oauthGoogleSign-in and token exchange for your users.
google_calendarGoogleRead/write events on a shared calendar.
google_driveGoogleRead/write files in a shared Drive folder.
youtubeYouTube Data APIRead channel/video data; uploads with OAuth.
githubGitHubRepos, issues, and pull requests.
bitbucketBitbucket CloudRepos and pull requests (Cloud only).

Data & observability

service_idProviderWhat it is for
datadogDatadogSend custom metrics and events.
google_searchGoogle Programmable SearchPublic web search results.
amazon_s3AWS S3Object storage in a bucket you own.

AI

The ai entry lets your app call OpenAI or Anthropic directly with a key you provide — see Bring Your Own AI Provider Key below.

Social & marketing

instagram, facebook, tiktok, x_social, linkedin, google_ads, and google_reviews are in the catalog too, but each sits behind the provider's own business verification or app-review process — see Providers That Require Business Verification below before you plan a launch around one.

Import, Configure, Execute

Every catalog entry follows the same three-step lifecycle, regardless of provider. First, import the service into your project — this links its schemas and registers it as available. Second, configure it with your provider credentials. Third, execute one of its operations. The same POST /api/v1/services/execute endpoint you'd use for an internal transactional service works identically here — the only difference is that the handler behind the scenes makes a real outbound call to the provider and writes a small tracking record for the attempt.

1. Import the service

bash
curl -X POST https://api.supero.dev/api/v1/services/import \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "email",
    "domain": "acme-corp",
    "project_uuid": "8f2a1c40-...",
    "config_data": {
      "sendgrid_api_key": "SG.xxxxxxxxxxxx"
    }
  }'
json
{
  "success": true,
  "service_id": "email",
  "namespace": "email",
  "service_registry_uuid": "b1c2...",
  "service_import_uuid": "d3e4...",
  "service_config_uuid": "f5a6...",
  "schemas_linked": [],
  "plugins_registered": ["email-sendgrid-gateway"],
  "error": null
}

2. Configure or update credentials

PUT to a service's /config endpoint at any time to add or rotate credentials — config_data is merged into what's already stored, so you only need to send the fields you're changing.
bash
curl -X PUT https://api.supero.dev/api/v1/services/email/config \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "config_data": {
      "sendgrid_api_key": "SG.xxxxxxxxxxxx",
      "default_from_email": "[email protected]",
      "sandbox_mode": true
    }
  }'

3. Execute an operation

bash
curl -X POST https://api.supero.dev/api/v1/services/execute \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "email",
    "operation": "send_email",
    "input": {
      "to_email": "[email protected]",
      "subject": "Welcome to Acme Corp",
      "body_html": "<p>Thanks for signing up!</p>"
    },
    "domain": "acme-corp",
    "project_uuid": "8f2a1c40-..."
  }'
json
{
  "success": true,
  "service_id": "email",
  "operation": "send_email",
  "output": { "record_uuid": "9c1d...", "status": "sent" },
  "side_effects": [],
  "record_uuid": "9c1d...",
  "error": null
}
You can also send operation_id instead of operation in the execute body — both are accepted and mean the same thing.

From Python

bash
pip install supero
python
from supero.service_lib import ServiceLib

sl = ServiceLib(api_key='ak_...', domain='acme-corp', project_uuid='8f2a1c40-...')

# import + configure in one call
sl.transactional.setup(('email',), safe=False)

# typed accessor — builds the input payload and calls /services/execute for you
result = sl.email.send(
    '[email protected]',
    'Welcome to Acme Corp',
    body_html='<p>Thanks for signing up!</p>',
)

# raw escape hatch — any service_id/operation, typed accessor or not
result = sl.exec('sms', 'send_sms', {'to_number': '+15551234567', 'body': 'Your order shipped'})

From your app frontend (JavaScript)

javascript
// The same execute escape hatch documented on the Transactional Services
// page works for any catalog entry — internal or provider-backed.
await client.transactional.execute('email', 'send_email', {
  to_email: '[email protected]',
  subject: 'Welcome to Acme Corp',
  body_html: '<p>Thanks for signing up!</p>',
});

💡 Usage counts toward your plan

Calls through /services/execute count toward your plan's usage allowance the same as any other platform operation. Current plan details and prepaid credit packs are on the Billing screen in your dashboard at app.supero.dev/billing.

Checking integration health before launch

GET https://api.supero.dev/api/v1/services/preflight?domain={domain}&project_uuid={project_uuid} gives you a read-only report of every imported service in a project: whether its required config fields are present, and — for providers the platform knows how to safely probe (for example SendGrid and Twilio) — a live auth check against the provider, without ever returning the secret itself. It also validates that any workflow's bound services are imported and configured. Run it after deploying to catch a missing or revoked credential before a customer does.

Provider Config Fields & Sandbox Credentials

Each provider has its own config_data field names, set via PUT /api/v1/services/{service_id}/config. Fields marked as secret in the catalog's config_schema are stored encrypted and returned masked on read. Most providers issue free test-mode or sandbox credentials you can use during development, then swap for production keys later without changing any code — only the config values change.
service_idConfig fields to setGetting test credentials
billing (Stripe)stripe_api_keyA free Stripe account's test-mode secret key (sk_test_…) works instantly, no business or bank verification required. Test card: 4242 4242 4242 4242, any future expiry/CVC.
stripe_checkoutstripe_api_key, stripe_publishable_keySame Stripe test-mode keys as above.
billing_paypalpaypal_mode, paypal_client_id, paypal_client_secretdeveloper.paypal.com is free and auto-creates a sandbox buyer and seller account; set paypal_mode to sandbox.
billing_razorpayrazorpay_key_id, razorpay_key_secretA free Razorpay account's Test Mode issues rzp_test_ keys with no KYC. Test card: 4111 1111 1111 1111.
plaidplaid_environment, plaid_client_id, plaid_secretPlaid's free dashboard issues Sandbox keys instantly; set plaid_environment to sandbox.
sms / whatsapp (Twilio)twilio_account_sid, twilio_auth_tokenA Twilio free trial account's Test Credentials exercise the API with magic numbers — no charge, no real message sent.
email (SendGrid)sendgrid_api_key, default_from_email, sandbox_modeA free-tier SendGrid API key plus sandbox_mode: true validates every request and returns success without actually delivering.
email_smtpsmtp_host, smtp_username, smtp_passwordA throwaway SMTP inbox provider mints test SMTP credentials for free — point smtp_host at it during development.
githubgithub_token, default_ownerA free GitHub account's fine-scoped personal access token, used against a throwaway repository.
oktaokta_org_url, okta_client_id, okta_client_secret, okta_api_tokenA free Okta Developer org (developer.okta.com) is a real dev-*.okta.com tenant with full API access.
salesforcesalesforce_is_sandbox, salesforce_username, salesforce_passwordA free Salesforce Developer Edition org; set salesforce_is_sandbox to true.
servicenowservicenow_instance_url, servicenow_username, servicenow_passwordA free ServiceNow Personal Developer Instance from developer.servicenow.com.
quickbooksqbo_environment, qbo_client_id, qbo_refresh_token, qbo_company_idA free Intuit developer account auto-creates a sandbox company; set qbo_environment to sandbox and mint a refresh token via Intuit's OAuth playground.
google_oauthgoogle_client_id, google_client_secret, redirect_uriA free Google Cloud project's OAuth client in Testing mode — add test users, no app verification required yet.
google_calendar / google_drivegoogle_service_account_jsonA free Google Cloud project's service-account JSON, shared onto the specific calendar or Drive folder you want to use.
push_notification (FCM)fcm_service_account_json, fcm_project_idA free Firebase project's service-account JSON; send to a test device token.
amazon_s3aws_access_key_id, aws_secret_access_key, aws_region, default_bucketAn AWS Free Tier account's scoped IAM key against a throwaway bucket.
datadogdd_api_key, dd_app_key, dd_siteA free 14-day Datadog trial issues real API and App keys instantly.

Providers That Require Business Verification

A handful of catalog providers are gated by the provider itself, not by Supero — you cannot self-serve your way to production access, and there is no free sandbox that fully substitutes for it. Build and test the rest of your integration first, and start the provider's approval process early since it can take days to weeks.
service_idProviderWhat is required before going live
instagramMeta Graph APIA reviewed Meta app, business verification, and a linked Instagram Business account.
facebookMeta Graph APIMeta app review, business verification, and a Page access token.
tiktokTikTok for DevelopersApp review before content-posting scopes are granted.
x_socialX (Twitter) APIWrite access requires a paid API tier; the free tier is read/limited.
linkedinLinkedIn APIPosting APIs sit behind LinkedIn's Marketing/Community Partner program review.
google_adsGoogle Ads APIAn approved developer token and a billing-enabled Google Ads account.
google_reviewsGoogle Business Profile APIAllowlisted access and a verified business location.

⚠️ Plan approval lead time separately

Import and configure these the same way as any other catalog entry once you have credentials — the mechanics don't differ. The only difference is how you obtain those credentials, which is entirely on the provider's timeline.

Bring Your Own AI Provider Key

The ai entry in the catalog lets your app call OpenAI or Anthropic directly, using an API key you obtain and pay for yourself. This is separate from — and does not use — the AI Supero itself runs to generate and enhance your app; it is simply another catalog integration your app's own logic can call, the same way it might call Stripe or SendGrid.
bash
curl -X POST https://api.supero.dev/api/v1/services/import \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "ai",
    "domain": "acme-corp",
    "project_uuid": "8f2a1c40-...",
    "config_data": {
      "openai_api_key": "sk-...",
      "anthropic_api_key": "sk-ant-..."
    }
  }'
bash
curl -X POST https://api.supero.dev/api/v1/services/execute \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "ai",
    "operation": "simple_completion",
    "input": {
      "prompt": "Summarize this support ticket in one sentence.",
      "model": "<the model id for whichever provider key you configured>",
      "max_tokens": 200
    },
    "domain": "acme-corp",
    "project_uuid": "8f2a1c40-..."
  }'
From Python, the typed accessor wraps the same call:
python
result = sl.ai.complete("Summarize this support ticket in one sentence.", max_tokens=200)
# or a multi-turn call:
result = sl.ai.chat([{"role": "user", "content": "Draft a refund email."}])

ℹ️ You control the key, you control the spend

Because you supply the provider key, usage is billed by OpenAI or Anthropic directly to your own account with them — it is not metered as Supero platform usage.

How This Fits Together

There are three related but distinct pieces on the platform, and it's easy to reach for the wrong one:
If you need to…Use
Connect a supported third-party provider (Stripe, Twilio, SendGrid, Okta, and the rest of the catalog above)The managed services catalog documented on this page — import, configure, execute.
Model your own app's business logic — a cart, an order, a booking, an approval flow — with a real lifecycle and state machine, no external provider involvedTransactional Services — same execute primitive, no crud_object_type, no outbound call.
Wire up a provider that isn't in the catalog, or call your own internal HTTP endpointThe Plugin Registry — register any HTTP endpoint with its own auth, retry, and circuit-breaker settings, then invoke it directly.
All three ultimately share the same reliability primitives — retries, a circuit breaker, and (for the two service-catalog paths) input validation against a declared schema — so the choice comes down to whether the provider you need is already in the catalog, not to a difference in how reliably the call is made.

Next steps

  • •Transactional Services — the internal ~23-service catalog (cart, order, booking, and more) that shares the same import/configure/execute lifecycle.
  • •Plugin Registry — the secondary, do-it-yourself path for a provider that isn't in the managed catalog or your own internal endpoint.
  • •Webhooks & Events — the inbound direction: a provider calling back into Supero to confirm what happened, and which providers have their signatures verified.
  • •Roles & Permissions Reference — who on your team can import, configure, and execute services.