A profile is the brand or client you post as. It holds at most one connected account per network: one TikTok, one YouTube channel, one Instagram account, and so on. When you post, you name the profile in user, and Reelspan publishes through that profile's accounts.
Use one profile per brand or per client. An agency with ten clients makes ten profiles, and connects each client's accounts to their own profile.
Create a profile
curl -X POST https://api.reelspan.com/v1/profiles \
-H "Authorization: Bearer $REELSPAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username": "my-brand", "display_name": "My Brand"}'import { Reelspan } from 'reelspan';
const reelspan = new Reelspan();
const { profile } = await reelspan.profiles.create('my-brand', 'My Brand');from reelspan import Reelspan
reelspan = Reelspan()
profile = reelspan.profiles.create("my-brand", "My Brand")["profile"]The answer is 201 with the new profile. It has no accounts yet: connect them next, see Connecting accounts.
usernameis the profile's id in every call. Use 1 to 64 letters, digits,_,@or-. It must be unique in your workspace and can't be changed later.display_nameis optional, up to 100 characters. It is how the profile shows in the dashboard.
| Error | When |
|---|---|
400 INVALID_USERNAME |
The username has other characters or is longer than 64. |
400 INVALID_DISPLAY_NAME |
The display name is over 100 characters or has control characters. |
403 PROFILE_LIMIT_REACHED |
The workspace already has as many profiles as its plan allows. |
409 PROFILE_EXISTS |
Another profile in the workspace has this username. |
How many profiles
| Plan | Profiles |
|---|---|
| Free | 1 |
| Starter | 5 |
| Pro | 25 |
| Agency | 75 |
| Scale | 225 |
GET /v1/profiles returns your plan's limit as limit, next to plan.
List profiles
curl https://api.reelspan.com/v1/profiles \
-H "Authorization: Bearer $REELSPAN_API_KEY"const { profiles, limit, plan } = await reelspan.profiles.list();result = reelspan.profiles.list()
profiles = result["profiles"]Profiles come oldest first. A key limited to some profiles sees only those.
Read one profile
curl https://api.reelspan.com/v1/profiles/my-brand \
-H "Authorization: Bearer $REELSPAN_API_KEY"const { profile } = await reelspan.profiles.get('my-brand');profile = reelspan.profiles.get("my-brand")["profile"]{
"success": true,
"profile": {
"username": "my-brand",
"display_name": "My Brand",
"created_at": "2026-11-02T09:14:03.120Z",
"social_accounts": {
"youtube": {
"username": "UCx4b2…",
"handle": "@mybrand",
"display_name": "My Brand",
"social_images": "https://yt3.ggpht.com/…",
"reauth_required": false,
"capabilities": ["video", "schedule", "thumbnail", "playlist"]
},
"tiktok": "",
"instagram": "",
"x": ""
}
}
}social_accounts has one entry for every network (shortened above). A network with no account connected is an empty string "". A connected one is an object:
username: the account's id on the network.handleanddisplay_name: how the account is named there.social_images: its avatar, when the network gives one.reauth_required:truewhen the network signed Reelspan out and the account must be connected again before it can post. See Reconnecting.capabilities: what the connection can do on that network, for examplevideo,reels,storiesorthumbnail.
Rename a profile
Only the display name can change. Send null to clear it.
curl -X PATCH https://api.reelspan.com/v1/profiles/my-brand \
-H "Authorization: Bearer $REELSPAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"display_name": "My Brand (EU)"}'await reelspan.profiles.rename('my-brand', 'My Brand (EU)');reelspan.profiles.rename("my-brand", "My Brand (EU)")Delete a profile
curl -X DELETE https://api.reelspan.com/v1/profiles \
-H "Authorization: Bearer $REELSPAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username": "my-brand"}'await reelspan.profiles.delete('my-brand');reelspan.profiles.delete("my-brand")Deleting a profile can't be undone. Its connected accounts are disconnected, and its post history and scheduled posts are deleted with it. The posts already live on the networks stay there.
To remove just one network from a profile, disconnect it instead: see Connecting accounts.
Scopes
Listing and reading profiles needs the read scope. Creating, renaming and deleting them needs profiles. See Scopes.