Skip to content
reelspanDocs

Accounts

Profiles

Create, list, rename and delete profiles. A profile is the brand or client you post as, with one connected account per network.

POSTapi.reelspan.com/v1/profilesTry it →

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"}'

The answer is 201 with the new profile. It has no accounts yet: connect them next, see Connecting accounts.

  • username is 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_name is 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"

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"
{
  "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.
  • handle and display_name: how the account is named there.
  • social_images: its avatar, when the network gives one.
  • reauth_required: true when 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 example video, reels, stories or thumbnail.

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)"}'

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"}'

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.

POSTapi.reelspan.com/v1/profilesTry it →

Request body

application/json

  • usernamestringrequired
  • display_namestring

Responses

201 Created

{
  "success": true,
  "profile": {
    "username": "firestack",
    "display_name": "string",
    "created_at": "string",
    "social_accounts": {}
  }
}

400 Invalid input

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

401 Missing or invalid API key

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}
GETapi.reelspan.com/v1/profilesTry it →

Responses

200 Profiles

{
  "success": true,
  "limit": 0,
  "plan": "string",
  "profiles": [
    {
      "username": "firestack",
      "display_name": "string",
      "created_at": "string",
      "social_accounts": {}
    }
  ]
}

400 Invalid input

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

401 Missing or invalid API key

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}
GETapi.reelspan.com/v1/profiles/{username}Try it →

Parameters

  • usernamestring · pathrequired

Responses

200 Profile

{
  "success": true,
  "profile": {
    "username": "firestack",
    "display_name": "string",
    "created_at": "string",
    "social_accounts": {}
  }
}

400 Invalid input

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

401 Missing or invalid API key

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}
PATCHapi.reelspan.com/v1/profiles/{username}Try it →

Parameters

  • usernamestring · pathrequired

Request body

application/json

  • display_namestringrequired

Responses

200 Updated

{
  "success": true,
  "profile": {
    "username": "firestack",
    "display_name": "string",
    "created_at": "string",
    "social_accounts": {}
  }
}

400 Invalid input

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

401 Missing or invalid API key

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}
DELETEapi.reelspan.com/v1/profilesTry it →

Request body

application/json

  • usernamestringrequired

Responses

200 Deleted

{
  "success": true,
  "message": "string"
}

400 Invalid input

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

401 Missing or invalid API key

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

Something unclear or missing? Write to [email protected] and we’ll fix the page.