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
profileIdfor 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)