Multi-Tenant Integration

Build for your own users with isolated profiles.

Edit this page·Last updated: July 13, 2026

Multi-Tenant Integration

pepe.business is designed for multi-tenant: each end user has their own Profile (isolated workspace) with their connected accounts.

Architecture

Your app
   │
   └─ pepe.business API
        ├─ Profile A (user 1)
        │   ├─ Account: twitter @alice
        │   └─ Account: linkedin alice
        ├─ Profile B (user 2)
        │   └─ Account: instagram @bob
        └─ Profile C (user 3)
            └─ ...

Create a profile per user

When a new user signs up on your app:

const profile = await pepe.profiles.create({
  name: "User " + user.id,
  externalId: user.id, // your internal ID
});
// profile.id → store in your DB on the user side

Operate "on behalf of" a profile

All APIs accept an X-Pepe-Profile-Id header:

curl https://api.pepe.business/v1/posts \
  -H "Authorization: Bearer pk_live_xxx" \
  -H "X-Pepe-Profile-Id: prof_xxx" \
  -d '{"text": "Hello", "platforms": ["twitter"]}'

The post is created in the context of profile prof_xxx, on that profile's connected accounts only.

OAuth per-profile

The OAuth flow must include the profileId:

POST /v1/connect/twitter
{
  "profileId": "prof_xxx"
}

The end user authorizes their own Twitter account, which will be attached to THEIR profile.

Data isolation

  • Each profile has its own accounts, posts, messages, analytics
  • Webhooks include the profileId for routing
  • API keys can be scoped to a profile (scoped keys)

Billing

Pricing is per connected account, regardless of profile. You pay for the total connected accounts across all your profiles.

White-label

OAuth can be white-label: the user sees your domain (connect.your-app.com) instead of pepe.business. Available on the Enterprise plan.

Limits

  • 10,000 profiles per API key (extendable on request)
  • 100 connected accounts per profile
  • No sharing of accounts between profiles (one account = one profile)

Was this page helpful?