Partnership Roles
Partnership Roles enable brands to establish formal collaborations with creators on Snapchat. Unlike Organization and Ad Account Roles, Partnership Roles govern the relationship between brands and external creators—allowing brands to invite creators to tag them in organic content or grant permission for ads to run as the creator's profile.
Permission Levels
| Level | Name | Description | Use Case |
|---|---|---|---|
BRAND_LEVEL | Brand Partner | Creator can tag the brand in organic posts using the "Paid Partnership" label | Organic-to-paid workflows where brands boost creator content |
AD_LEVEL | Ad Partner | Brand can run ads that appear as the creator's profile | Paid-first workflows where the ad shows the creator as the sender |
AD_LEVEL includes all capabilities of BRAND_LEVEL. A creator with AD_LEVEL permission can also tag the brand in organic posts.
The Partnership Handshake
All partnership workflows require a two-way approval:
- Brand initiates — Sends invitation via API or Business Manager
- Creator approves — Accepts in Snapchat app (Profile Settings → Pending Invitations)
The partnership is not active until the creator accepts. Poll the status endpoint to detect when role_status changes from PENDING to APPROVED.
The API does not currently send webhooks for partnership status changes. You must poll to detect approval.
ProfileRole Attributes
| Attribute | Type | Required | Description | Possible Values |
|---|---|---|---|---|
invitee_username | String | Yes | The invitee Snapchat user name | |
invitee_display_name | String | No | The invitee Snapchat user display name | |
invitee_user_id | UUID | Yes | Unique identifier of the invitee Snapchat user | |
invitor_user_id | UUID | Read-only | Unique identifier of the invitor Snapchat user (only populated in response) | |
role_type | String | Yes | Role type the invitee Snapchat user will be assigned | business_account_story_contributor, preapproved_creator_ad_partner |
role_status | Enum | Read-only | Invite role status (only populated in response) | PENDING, APPROVED, EXPIRED, REJECTED |
partnership_level | String | Yes | Brand partnership level the invitee Snapchat user will be assigned | AD_LEVEL, BRAND_LEVEL |
Create Pre-Approved Creators
A brand profile can invite pre-approved creator(s) for brand collaboration.
HTTP Request
https://businessapi.snapchat.com/v1/public_profiles/{profile_id}/roles
Parameters
| Parameter | Required | Description |
|---|---|---|
profile_id | Yes | Brand Profile ID (in URL path) |
roles | Yes | List of ProfileRole objects to create. Currently only supports one input object per call. |
Request Body
{
"roles": [
{
"invitee_username": "mytestuser",
"invitee_display_name": "Snap Test User",
"invitee_user_id": "a474fcea-c5f3-473a-8bb3-2aa1787c139d",
"role_type": "preapproved_creator_ad_partner",
"partnership_level": "AD_LEVEL"
}
]
}
HTTP Response
| Name | Description | Possible Values |
|---|---|---|
request_id | A UUID to identify this request. | |
request_status | SUCCESS, ERROR | |
roles | List of ProfileRole objects that have been created. | |
auto_approved | true if target and source users are bidirectional friends | true, false |
debug_message | A debug message to help debug if there is an error | |
display_message | Display message if there is an error. | |
error_code | Error code if there is an error |
Response
{
"request_id": "862ed9f0-096e-406f-834c-aa29bf211a66",
"request_status": "SUCCESS",
"roles": [
{
"invitee_username": "mytestuser",
"invitee_display_name": "Snap Test User",
"invitee_user_id": "a474fcea-c5f3-473a-8bb3-2aa1787c139d",
"invitor_user_id": "3edf7e14-88cc-43a2-aee0-5adee2ae9ed9",
"role_type": "preapproved_creator_ad_partner",
"role_status": "PENDING",
"partnership_level": "AD_LEVEL"
}
],
"auto_approved": false
}
Get Partnership Role
Check the status of a specific partnership invitation.
HTTP Request
https://businessapi.snapchat.com/v1/public_profiles/{profile_id}/roles/{role_id}
Response
{
"request_status": "SUCCESS",
"roles": [
{
"invitee_username": "mytestuser",
"invitee_display_name": "Snap Test User",
"invitee_user_id": "a474fcea-c5f3-473a-8bb3-2aa1787c139d",
"invitor_user_id": "3edf7e14-88cc-43a2-aee0-5adee2ae9ed9",
"role_type": "preapproved_creator_ad_partner",
"role_status": "APPROVED",
"partnership_level": "AD_LEVEL"
}
]
}
List Partnership Roles
Retrieve all partnership roles for a profile.
HTTP Request
https://businessapi.snapchat.com/v1/public_profiles/{profile_id}/roles
Parameters
| Parameter | Required | Description |
|---|---|---|
profile_id | Yes | Your brand's Public Profile ID |
limit | No | Number of results per page (default: 50) |
cursor | No | Pagination cursor for next page |
Response
{
"request_status": "SUCCESS",
"roles": [
{
"invitee_username": "creator1",
"invitee_display_name": "Creator One",
"invitee_user_id": "a474fcea-c5f3-473a-8bb3-2aa1787c139d",
"invitor_user_id": "3edf7e14-88cc-43a2-aee0-5adee2ae9ed9",
"role_type": "preapproved_creator_ad_partner",
"role_status": "APPROVED",
"partnership_level": "AD_LEVEL"
},
{
"invitee_username": "creator2",
"invitee_display_name": "Creator Two",
"invitee_user_id": "b585fdef-d6g4-584b-9cc4-3bb2898d240e",
"invitor_user_id": "3edf7e14-88cc-43a2-aee0-5adee2ae9ed9",
"role_type": "business_account_story_contributor",
"role_status": "PENDING",
"partnership_level": "BRAND_LEVEL"
}
],
"paging": {
"next_page_id": "cursor-string"
}
}
List Ad Partner Profiles
For AD_LEVEL partnerships, retrieve all creator profiles that have accepted ad partner invitations. Use this to populate a "Select Creator" dropdown when creating ads.
HTTP Request
https://businessapi.snapchat.com/v1/public_profiles/{profile_id}/ad_partner_profiles
Response
{
"request_status": "SUCCESS",
"ad_partner_profiles": [
{
"profile_id": "creator-profile-uuid",
"display_name": "Creator Name",
"username": "creatorhandle",
"logo_url": "https://..."
}
]
}
Delete Partnership Role
Remove a partnership. This revokes the creator's ability to tag your brand or your ability to run ads as their profile.
HTTP Request
https://businessapi.snapchat.com/v1/public_profiles/{profile_id}/roles/{role_id}
Response
{
"request_status": "SUCCESS"
}
Role Status Transitions
Common Errors
| Error | Cause | Resolution |
|---|---|---|
AUTHORIZATION_PERMISSION_DENIED | Token user is not a Profile Admin | Ensure the OAuth token belongs to a user with Profile Admin role |
DUPLICATE_ROLE | Active role already exists for this creator | Check GET /roles before sending new invite |
INVALID_USER_ID | invitee_user_id does not exist | Verify the creator's User ID via Creator Discovery |
RESOURCE_NOT_FOUND | profile_id or role_id is incorrect | Double-check IDs in the request |
Related Documentation
- Creator Discovery — Find creators and retrieve their User IDs
- Shared Snaps — Retrieve content where creators tagged your brand
- Brand Partnerships Guide — End-to-end workflow for organic-to-paid campaigns
- Ad Partnerships Guide — End-to-end workflow for paid-first campaigns