Summary and recommendation
SproutVideo exposes a REST API at https://api.sproutvideo.com/v1 with full CRUD coverage for team members via GET, POST, PUT, and DELETE on the /v1/team_members resource.
Authentication uses a custom header - `SproutVideo-Token: <your_token>` - rather than OAuth 2.0 or standard Bearer tokens;
tokens are account-scoped with no per-scope granularity.
There are no official SDKs, no webhooks for user-management events, and no SCIM 2.0 support;
all identity lifecycle operations must be driven through raw HTTP calls or a third-party integration layer.
For teams building an identity graph across SaaS tools, SproutVideo's API can feed member state - id, email, role, created_at, updated_at - but requires polling to detect changes.
API quick reference
| Has user API | Yes |
| Auth method | API Token (header-based) |
| Base URL | Official docs |
| SCIM available | No |
| SCIM plan required | Enterprise |
Authentication
Auth method: API Token (header-based)
Setup steps
- Log in to your SproutVideo account.
- Navigate to Account Settings > API.
- Generate or copy your API token.
- Include the token in all requests via the header: SproutVideo-Token:
User object / data model
| Field | Type | Description | On create | On update | Notes |
|---|---|---|---|---|---|
| id | string | Unique identifier for the team member. | auto-assigned | immutable | Read-only. |
| string | Email address of the team member. | required | optional | Used as the login identifier. | |
| name | string | Full name of the team member. | optional | optional | |
| role | string | Role assigned to the team member (e.g., admin, viewer). | optional | optional | Role options depend on account plan. |
| created_at | datetime | Timestamp when the team member was created. | auto-assigned | immutable | ISO 8601 format. |
| updated_at | datetime | Timestamp of last update. | auto-assigned | auto-updated | ISO 8601 format. |
Core endpoints
List team members
- Method: GET
- URL:
https://api.sproutvideo.com/v1/team_members - Watch out for: Results are paginated at 25 per page; use ?page=N to iterate.
Request example
GET /v1/team_members
SproutVideo-Token: <token>
Response example
{
"team_members": [
{"id":"abc123","email":"user@example.com","name":"Jane Doe","role":"admin"}
],
"total_count": 1
}
Get a team member
- Method: GET
- URL:
https://api.sproutvideo.com/v1/team_members/:id - Watch out for: Returns 404 if the team member ID does not exist on the account.
Request example
GET /v1/team_members/abc123
SproutVideo-Token: <token>
Response example
{
"id": "abc123",
"email": "user@example.com",
"name": "Jane Doe",
"role": "admin"
}
Invite/create a team member
- Method: POST
- URL:
https://api.sproutvideo.com/v1/team_members - Watch out for: An invitation email is sent to the specified address; the user must accept before gaining access.
Request example
POST /v1/team_members
SproutVideo-Token: <token>
Content-Type: application/json
{"email":"newuser@example.com","role":"viewer"}
Response example
{
"id": "def456",
"email": "newuser@example.com",
"role": "viewer",
"created_at": "2024-01-15T10:00:00Z"
}
Update a team member
- Method: PUT
- URL:
https://api.sproutvideo.com/v1/team_members/:id - Watch out for: Only mutable fields (e.g., role) can be updated; email changes are not supported via API.
Request example
PUT /v1/team_members/def456
SproutVideo-Token: <token>
Content-Type: application/json
{"role":"admin"}
Response example
{
"id": "def456",
"email": "newuser@example.com",
"role": "admin"
}
Delete a team member
- Method: DELETE
- URL:
https://api.sproutvideo.com/v1/team_members/:id - Watch out for: Deletion is immediate and irreversible; the user loses account access instantly.
Request example
DELETE /v1/team_members/def456
SproutVideo-Token: <token>
Response example
HTTP 204 No Content
Rate limits, pagination, and events
Rate limits: SproutVideo does not publicly document specific rate limit thresholds or tiers in their API docs.
Rate-limit headers: No
Retry-After header: No
Rate-limit notes: No rate limit details are published in official documentation. Contact SproutVideo support for current limits.
Pagination method: offset
Default page size: 25
Max page size: 25
Pagination pointer: page
Webhooks available: No
Webhook notes: SproutVideo does not document a webhook system for user-management events in their official API docs.
Alternative event strategy: Poll the /v1/team_members endpoint periodically to detect changes.
SCIM API status
- SCIM available: No
- SCIM version: Not documented
- Plan required: Enterprise
- Endpoint: Not documented
Limitations:
- No native SCIM 2.0 support documented by SproutVideo.
- SSO is available on higher-tier plans (Tree/Forest) but SCIM provisioning is not offered natively.
- Automated provisioning must be handled via the REST API or a third-party integration layer.
Common scenarios
Three core automation scenarios are supported by the API.
Provisioning: POST /v1/team_members with {email, role} and capture the returned id;
note that the member is not active until they accept the invitation email, so downstream access checks must account for that pending state.
Deprovisioning: GET /v1/team_members to resolve the user's id by email, then DELETE /v1/team_members/:id;
confirm removal by expecting a 404 on a subsequent GET - deletion is immediate and irreversible with no suspend/deactivate state available.
Auditing: paginate GET /v1/team_members?page=N, using total_count in the response to calculate total pages (total_count ÷ 25, rounded up);
page size is fixed at 25 with no cursor support, so large teams require multiple sequential requests.
Provision a new team member
- POST /v1/team_members with {email, role} and SproutVideo-Token header.
- Capture the returned id for future reference.
- Inform the user to check their email and accept the invitation before access is granted.
Watch out for: The user is not active until they accept the invitation email; do not assume immediate access.
Deprovision a team member on offboarding
- GET /v1/team_members to locate the user's id by email.
- DELETE /v1/team_members/:id to remove the user.
- Verify removal with a subsequent GET /v1/team_members/:id expecting a 404 response.
Watch out for: Deletion is permanent; there is no suspend/deactivate state available via the API.
Audit all current team members
- GET /v1/team_members?page=1 with SproutVideo-Token header.
- Check total_count in the response to determine total pages (total_count / 25, rounded up).
- Iterate through pages incrementing the page parameter until all records are retrieved.
Watch out for: Page size is fixed at 25; large teams require multiple sequential requests with no cursor support.
Why building this yourself is a trap
Several API behaviors warrant explicit handling in any integration. Rate limits are entirely undocumented - implement conservative exponential backoff from the start, as there is no Retry-After header to guide retry timing. The POST /v1/team_members endpoint triggers an invitation email immediately;
the created record exists in the API but the user cannot access the account until acceptance, which means your identity graph must track a 'pending' state distinct from 'active.' Email addresses cannot be updated via PUT - only mutable fields like role are supported, so email corrections require delete-and-reinvite. Finally, there are no webhooks;
detecting role changes, invitation acceptance, or removals initiated outside your integration requires periodic polling of /v1/team_members.
Automate SproutVideo workflows without one-off scripts
Stitchflow builds and maintains end-to-end IT automation across your SaaS stack, including apps without APIs. Built for exactly how your company works, with human approvals where they matter.