Profiles
What a profile is, why profiles are free, the one-account-per-platform rule, and how to connect a second account of the same platform from the dashboard or the API
A profile is a folder inside your team that groups connected accounts: one per brand, client, or tenant. Every team starts with a profile named "Default", and every connected account lives in exactly one profile. Profiles are the reason the same login can hold two Instagram accounts, and they are the tenant boundary if you are building a platform.
Profiles are free
Profiles do not bill. On the usage plan they are unlimited, and only connected accounts count. Ten profiles with one account each cost the same as one profile with ten accounts. Legacy Stripe and AppSumo plans keep the profile cap of their tier; the API returns 403 with code PROFILE_OVER_LIMIT when a legacy plan is full.
One account per platform per profile
A profile holds at most one account per platform: one Instagram, one TikTok, one YouTube channel, one LinkedIn page, and so on. Starting the connect flow for a platform that the profile already has replaces the existing connection with the account you authorize; it does not add a second one next to it.
So the answer to "how do I add my second TikTok account" or "how do I connect more Facebook Pages" is always the same: create another profile and connect the account there.
Connect a second account of the same platform
Dashboard
- Open the Connections page (the dashboard home at
zernio.com/dashboard). - The profile switcher is the dropdown next to the "Platforms" heading, at the top left of the account grid. It lists your profiles, shows an "All profiles" option, and has a New profile button at the bottom. Click New profile, name it, and it becomes the selected profile.
- With the new profile selected, click the platform you want to connect and authorize the second account. In the platform's own login screen make sure you pick the second account, not the one already connected.
The profile switcher only appears once the page has a profile to show; the profile ID is printed next to it with a copy button, which is the profileId you pass to the API.
API
Create the profile, then start the connect flow with its profileId. The account lands in that profile.
curl -X POST "https://zernio.com/api/v1/profiles" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Second brand", "color": "#4CAF50" }'const { data } = await zernio.profiles.createProfile({
body: { name: 'Second brand', color: '#4CAF50' },
});
const profileId = data.profile._id;Response (201):
{
"message": "Profile created successfully",
"profile": {
"_id": "64f0a1b2c3d4e5f6a7b8c9d0",
"userId": "6507a1b2c3d4e5f6a7b8c9d0",
"name": "Second brand",
"color": "#4CAF50",
"isDefault": false,
"createdAt": "2024-11-01T10:00:00Z"
}
}Profile names are unique within a team; a duplicate returns 409 with code profile_name_conflict and details.existingProfileId. Send an Idempotency-Key header if your client retries.
Then connect the account into it:
curl "https://zernio.com/api/v1/connect/tiktok?profileId=64f0a1b2c3d4e5f6a7b8c9d0&redirect_url=https://your-app.com/callback" \
-H "Authorization: Bearer YOUR_API_KEY"Redirect the user to the returned authUrl. When they come back, GET /v1/accounts?profileId=64f0a1b2c3d4e5f6a7b8c9d0 lists the new account with its accountId, which is what you use to post. The full flow, including headless mode and the platforms that need a page or organization selection step, is in Connecting Accounts.
Related endpoints
- Create profile, List profiles, Delete profile
- Start OAuth, the
profileIdparameter - List accounts, filter by
profileId - Build a platform, one profile per customer