Gumlet Channel Viewers API
Invite and remove viewers on a private video channel.
Invite and remove viewers on a private video channel.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/gumlet-channel-viewers-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Gumlet Channel Viewers API
description: Gumlet helps developers deliver online video and images. This API encompasses Gumlet Video, Image and Video Analytics functionality to help you build your products better and faster than ever before.
version: '1.4'
contact:
name: Gumlet Support Team
url: https://www.gumlet.com/contact/
email: support@gumlet.com
termsOfService: https://www.gumlet.com/terms/
license:
name: Apache 2.0
url: https://opensource.org/license/apache-2.0
x-scalar-sdk-installation:
- lang: TypeScript
description: '```sh
npm install @gumlet/nodejs-sdk
```'
- lang: Python
description: '```sh
pip install gumlet
```'
servers:
- url: https://api.gumlet.com/v1
security:
- API_KEY: []
tags:
- name: Channel Viewers
description: Invite and remove viewers on a private video channel.
paths:
/channel/{video_workspace_id}/viewers/invite:
post:
summary: Invite Channel Viewers
description: Invite one or more viewers to a members-only channel.
operationId: invite-channel-viewers
parameters:
- in: path
name: video_workspace_id
description: Gumlet workspace ID. You can get it on Gumlet dashboard or retrieve it using list workspace API.
schema:
type: string
required: true
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- users
properties:
users:
type: array
description: List of viewers to invite. A maximum of 200 viewers can be invited in one request.
minItems: 1
maxItems: 200
items:
type: object
required:
- email
- name
properties:
email:
type: string
format: email
description: Viewer email address.
name:
type: string
minLength: 1
maxLength: 100
description: Viewer display name.
examples:
Request Example:
value:
users:
- email: test@gumlet.com
name: Test User-0
- email: test+1@gumlet.com
name: Test User-1
- email: test+2@gumlet.com
name: Test User-2
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value:
success: true
schema:
type: object
properties:
success:
type: boolean
example: true
'400':
description: Bad Request
content:
application/json:
examples:
Result:
value:
error:
code: invalid_email_format
message: One of the emails provided is in invalid format, Please provide a valid email address.
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: invalid_email_format
message:
type: string
example: One of the emails provided is in invalid format, Please provide a valid email address.
required:
- code
- message
required:
- error
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
tags:
- Channel Viewers
x-stoplight:
id: pynbolf5gd84k
x-codeSamples:
- label: TypeScript
lang: TypeScript
source: "import Gumlet from '@gumlet/nodejs-sdk';\n\nconst client = new Gumlet({\n apiKey: process.env['API_KEY'], // defaults to the API_KEY env var\n});\n\nconst channelViewer = await client.channelViewers.invite('videoWorkspaceId', {\n users: [\n { email: 'test@gumlet.com', name: 'Test User-0' },\n { email: 'test+1@gumlet.com', name: 'Test User-1' },\n { email: 'test+2@gumlet.com', name: 'Test User-2' },\n ],\n});\n\nconsole.log(channelViewer);"
- label: Python
lang: Python
source: "import os\n\nfrom gumlet import Gumlet\n\nclient = Gumlet(\n api_key=os.environ.get(\"API_KEY\"),\n)\n\nchannel_viewer = client.channel_viewers.invite(\n video_workspace_id=\"videoWorkspaceId\",\n users=[\n {\"email\": \"test@gumlet.com\", \"name\": \"Test User-0\"},\n {\"email\": \"test+1@gumlet.com\", \"name\": \"Test User-1\"},\n {\"email\": \"test+2@gumlet.com\", \"name\": \"Test User-2\"},\n ],\n)\n\nprint(channel_viewer)"
/channel/{video_workspace_id}/viewers/remove:
post:
summary: Remove Channel Viewers
description: Remove one or more viewers from a channel by email address.
operationId: remove-channel-viewers
parameters:
- in: path
name: video_workspace_id
description: Gumlet workspace ID. You can get it on Gumlet dashboard or retrieve it using list workspace API.
schema:
type: string
required: true
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- emails
properties:
emails:
type: array
description: Email addresses of viewers to remove. A maximum of 200 viewers can be removed in one request.
maxItems: 200
items:
type: string
format: email
examples:
Request Example:
value:
emails:
- test@gumlet.com
- test+2@gumlet.com
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value:
success: true
schema:
type: object
properties:
success:
type: boolean
example: true
'400':
description: Bad Request
content:
application/json:
examples:
Result:
value:
error:
code: invalid_channel_id
message: Channel id is not a vaild id.
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: invalid_channel_id
message:
type: string
example: Channel id is not a vaild id.
required:
- code
- message
required:
- error
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
tags:
- Channel Viewers
x-stoplight:
id: ow2emng08e9gs
x-codeSamples:
- label: TypeScript
lang: TypeScript
source: "import Gumlet from '@gumlet/nodejs-sdk';\n\nconst client = new Gumlet({\n apiKey: process.env['API_KEY'], // defaults to the API_KEY env var\n});\n\nconst channelViewer = await client.channelViewers.delete('videoWorkspaceId', {\n emails: ['test@gumlet.com', 'test+2@gumlet.com'],\n});\n\nconsole.log(channelViewer);"
- label: Python
lang: Python
source: "import os\n\nfrom gumlet import Gumlet\n\nclient = Gumlet(\n api_key=os.environ.get(\"API_KEY\"),\n)\n\nchannel_viewer = client.channel_viewers.delete(\n video_workspace_id=\"videoWorkspaceId\",\n emails=[\"test@gumlet.com\", \"test+2@gumlet.com\"],\n)\n\nprint(channel_viewer)"
/channel/{video_workspace_id}/viewers/invite/csv:
post:
summary: Invite Channel Viewers via CSV
description: Invite viewers to a channel by uploading a CSV file.
operationId: invite-channel-viewers-csv
parameters:
- in: path
name: video_workspace_id
description: Gumlet workspace ID. You can get it on Gumlet dashboard or retrieve it using list workspace API.
schema:
type: string
required: true
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- viewers_csv
properties:
viewers_csv:
type: string
format: binary
description: 'CSV file containing viewer rows. Required columns: email, name. Maximum 500 viewers.'
examples:
CSV Upload:
value:
viewers_csv: viewers.csv
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value:
success: true
schema:
type: object
properties:
success:
type: boolean
example: true
'400':
description: Bad Request
content:
application/json:
examples:
Result:
value:
error:
code: csv_file_missing
message: CSV File is a required parameters
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: csv_file_missing
message:
type: string
example: CSV File is a required parameters
required:
- code
- message
required:
- error
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'413':
description: Payload Too Large
content:
application/json:
examples:
Result:
value:
error:
code: file_too_large
message: Uploaded file exceeds the maximum allowed size
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: file_too_large
message:
type: string
example: Uploaded file exceeds the maximum allowed size
required:
- code
- message
required:
- error
tags:
- Channel Viewers
x-stoplight:
id: k8pujzz5z3wov
x-codeSamples:
- label: TypeScript
lang: TypeScript
source: "import Gumlet from '@gumlet/nodejs-sdk';\n\nconst client = new Gumlet({\n apiKey: process.env['API_KEY'], // defaults to the API_KEY env var\n});\n\nconst channelViewer = await client.channelViewers.inviteCsv('videoWorkspaceId', {\n viewers_csv: 'viewers.csv',\n});\n\nconsole.log(channelViewer);"
- label: Python
lang: Python
source: "import os\n\nfrom gumlet import Gumlet\n\nclient = Gumlet(\n api_key=os.environ.get(\"API_KEY\"),\n)\n\nchannel_viewer = client.channel_viewers.invite_csv(\n video_workspace_id=\"videoWorkspaceId\",\n viewers_csv=b\"viewers.csv\",\n)\n\nprint(channel_viewer)"
/channel/{workspace_id}/viewers:
get:
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
subscriptions:
type: array
items:
type: object
properties:
id:
type: string
description: Subscriber ID
email:
type: string
description: Email ID of the subscriber
format: email
name:
type: string
description: Name of the subscriber
status:
type: string
description: Current status of the subscriber
channel_title:
type: string
description: Title of channel
invited_at:
type: string
description: ISO 8601 timestamp of the invitation time
invited_by:
type: string
description: User ID of the user who invited this subscriber
invitation_link:
type: string
description: URL of the invitation from where the person can accept the invite.
x-apidog-orders:
- id
- email
- name
- status
- channel_title
- invited_at
- invited_by
- invitation_link
required:
- id
- email
- name
- status
- channel_title
description: Details about subscribers
total_count:
type: integer
description: Number of total subscribers
x-apidog-orders:
- subscriptions
- total_count
required:
- subscriptions
- total_count
'400':
description: Bad Request
content:
application/json:
examples:
Result:
value:
error:
code: channel_not_found
message: Could not find any channel with specified id.
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: channel_not_found
message:
type: string
example: Could not find any channel with specified id.
required:
- code
- message
required:
- error
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
summary: List Subscribers
tags:
- Channel Viewers
operationId: list-channel-subscribers
description: List all channel subscribers.
parameters:
- in: path
name: workspace_id
description: Gumlet workspace ID. You can get it on Gumlet dashboard or retrieve it using list workspace API.
schema:
type: string
required: true
- in: query
name: page_number
schema:
type: integer
default: 1
minimum: 1
multipleOf: 1
description: Page number to retrieve. Starts at 1.
- in: query
name: page_size
schema:
type: integer
default: 10
multipleOf: 1
minimum: 1
description: Number of items to return per page
required: false
x-codeSamples:
- label: TypeScript
lang: TypeScript
source: "import Gumlet from '@gumlet/nodejs-sdk';\n\nconst client = new Gumlet({\n apiKey: process.env['API_KEY'], // defaults to the API_KEY env var\n});\n\nconst channelViewer = await client.channelViewers.listSubscribers('workspaceId', {\n page_number: 1,\n page_size: 10,\n});\n\nconsole.log(channelViewer);"
- label: Python
lang: Python
source: "import os\n\nfrom gumlet import Gumlet\n\nclient = Gumlet(\n api_key=os.environ.get(\"API_KEY\"),\n)\n\nchannel_viewer = client.channel_viewers.list_subscribers(\n workspace_id=\"workspaceId\",\n page_number=1,\n page_size=10,\n)\n\nprint(channel_viewer)"
components:
schemas:
Error:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Machine-readable error code
message:
type: string
description: Human-readable error message
param:
type: string
description: Optional parameter name related to the error
responses:
Unauthorized:
description: Unauthorized — missing or invalid API key / bearer token
content:
application/json:
examples:
Result:
value:
error:
code: invalid_api_key
message: API key supplied with request is invalid
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: Forbidden — unpaid account or insufficient role permissions
content:
application/json:
examples:
Result:
value:
error:
code: unauthorized
message: You don't have access to this feature. Please contact your organization owner.
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
API_KEY:
type: http
scheme: bearer
x-tagGroups:
- name: Video on Demand
tags:
- Video Assets
- Global Search
- Multipart Upload
- Audio Upload
- Subtitle Upload
- Recycle Bin
- Video Workspaces
- Folders
- Video Playlists
- Channel Viewers
- Video Usage Analytics
- Video Profiles
- Webhooks
- name: Live Streams
tags:
- Live Stream Workspaces
- Live Stream Assets
- Live Stream Analytics
- name: Image APIs
tags:
- Image Sources
- Image Usage Analytics
- name: Video Analytics
tags:
- Video Analytics
- name: Webhooks
tags:
- Webhooks
- name: Account Endpoints
tags:
- User Data
- Billing
- Organization Data
- Audit Logs
x-ext-urls: {}