Quick Start Guide
This guide will help you get started with the Eyeson One View REST API in just a few minutes.
What You'll Learn
- How to obtain and use an API key
- Creating your first video meeting
- Understanding user types and access methods
- Basic layout customization
- Working with background and foreground layers
Prerequisites
- Basic understanding of REST APIs
- A tool to make HTTP requests (curl, Postman, etc.)
- An Eyeson account (or willingness to create one)
How to Obtain an Eyeson API Key
To start your first meeting, you'll need an API Key and a terminal to run cURL commands.
- If you don't have an API Key, follow the instructions in the next section
- If you already have an API Key, skip to How to start your first meeting
You'll also learn to work with layouts and layers later.
To use the Eyeson API, you need an API key for authentication and access to Eyeson's video features. Here's how to get one:
Step 1: Register for an Eyeson Account
- Visit the Developer Portal
- Sign up for an account to access API key management
Step 2: Confirm your Email Address
- Click the confirmation link in your signup email
Step 3: Access the Developer Portal
- Log in to the Eyeson Developer Portal
- Go to "Your API Project" or "Manage your projects"
Step 4: Create an API Project
- Click "Create New Project"
- Enter a name and description
- Your API key will be generated automatically
Step 5: Manage Your API Key
- View, regenerate, or revoke your key anytime in the Project Management section
- Use the "Manage" section to modify key settings
Step 6: Start Using Your API Key
- Include the API key in your request headers:
Authorization: YOUR_API_KEY
Additional Notes
- Free tier includes 1,000 minutes monthly for testing
- Upgrade for additional usage/features
- Never share your API key publicly
How to Start Your First Meeting
With your API Key ready, you can create your first meeting room:
# Create a new Eyeson room with basic configurations
# - Uses standup as room ID
# - Creates user named Bob
# - Disables SFU mode
# - Enables widescreen format
curl -X POST \
-H "Authorization: YOUR_API_KEY" \
-d "id=standup" \
-d "user[name]=Bob" \
-d "options[sfu_mode]=disabled" \
-d "options[widescreen]=true" \
"https://api.eyeson.team/rooms"
This creates a meeting room and returns a response. See Create a Room for all available options. The response includes an HTTP status code and JSON payload.
Required parameters:
- API Key in Authorization header
- Endpoint:
https://api.eyeson.team/rooms
- Room ID and username in payload
- Optional settings like SFU mode and screen format
Response Status: 201
{
"access_key": "YOUR_ACCESS_KEY",
"ready": false,
"locked": false,
"room": {
"id": "standup",
"name": "Scrum",
"ready": true,
"started_at": "2024-12-09T14:25:02.254Z",
"shutdown": false,
"guest_token": "YOUR_GUEST_TOKEN"
},
"team": {
"name": "Scrum"
},
"user": {
"id": "6756fdc1755694e70cb72c80",
"room_id": "tryout",
"name": "Bob",
"avatar": null,
"guest": false,
"blocked": false,
"ready": false
},
"links": {
"self": "https://api.eyeson.team/rooms/YOUR_ACCESS_KEY",
"gui": "https://app.eyeson.team/?YOUR_ACCESS_KEY",
"guest_join": "https://app.eyeson.team/?guest=YOUR_GUEST_TOKEN",
"websocket": "https://api.eyeson.team/rt?access_key=YOUR_ACCESS_KEY"
},
"options": {
"show_names": true,
"show_label": true,
"exit_url": null,
"recording_available": true,
"broadcast_available": true,
"layout_available": true,
"layout": "auto",
"reaction_available": true,
"suggest_guest_names": true,
"lock_available": false,
"kick_available": true,
"sfu_mode": "disabled",
"layout_users": null,
"layout_name": null,
"layout_map": null,
"voice_activation": false,
"custom_fields": {},
"widescreen": true,
"background_color": "#121212"
},
"playbacks": [],
"presentation": null,
"broadcasts": [],
"recording": null,
"snapshots": [],
"waiting_list": [],
"signaling": {
"type": "sepp",
"options": {
"client_id": "6756fdc1755694e70cb72c80",
"conf_id": "6756fdbe755694e70cb72c7f",
"auth_token": "eyJhbGciOiJFUzM4NCJ9.eyJpc3MiOiJleWVzb24tY29tYXBpIiwiY2xpZW50X2lkIjoiNjc1NmZkYzE3NTU2OTRlNzBjYjcyYzgwIiwiZXhwIjoxNzMzNzU3OTA3LCJjb25mX2lkIjoiNjc1NmZkYmU3NTU2OTRlNzBjYjcyYzdmIn0.iGaL9KfAQF2D0p9SxdRodfo5vYfE37S2AV8Kyoz5xgnx7y3T8ToZTE-cct0Cg6YSdQNAjA9PyTE3PGxwcOKqEywkIAp2aEyqgP7Ajbeu-nAUwYcPUrCJjeZ4WxLfno0e",
"endpoint": "wss://sig.eyeson.com/call",
"stun_servers": [
"stun:nuts.eyeson.com:3478"
],
"turn_servers": [
{
"urls": [
"turn:nuts.eyeson.com:3478",
"turn:nuts.eyeson.com:3478?transport=tcp",
"turns:nuts.eyeson.com:443?transport=tcp"
],
"username": "1733840707:6756fdc1755694e70cb72c80",
"password": "r66KgWNa9PQY0ObQDBsHuYRUS4Q="
}
]
}
}
}
The response includes four important links:
- self: API endpoint for the room
- gui: Direct link to join the meeting
- guest_join: Shareable link for guests
- websocket: WebSocket connection endpoint
Users, Keys and Tokens
The API supports three user types:
- API Key User
Required for room management and server-side operations
API Key operations should be performed server-side for security, while Access Key operations are safe client-side
-
Access Key User
Used for standard meeting operations and layout control -
Guest User
Temporary participant with limited meeting access via guest token
See users for detailed documentation
Layouts
Layouts define the position and arrangement of video elements. The default options[layout]
value is "auto", which adjusts based on participant count.
You can modify layouts via API:
curl -X POST \
-d "layout=custom" \
-d "name=four" \
-d "users[]=USER_ID_A" \
-d "users[]=USER_ID_B" \
-d "users[]=USER_ID_C" \
-d "users[]=USER_ID_D" \
"https://api.eyeson.team/rooms/ACCESS_KEY/layout"
For custom layouts:
export ACCESS_KEY=123...
export USER_ID1=123... # from server response
curl -X POST \
-d "name=custom-map" \
-d "map=[[20, 80, 400, 400, \"auto\"],[440, 160, 400, 400, \"contain\"],[860, 240, 400, 400, \"cover\"]]" \
-d "users[]=" \
-d "users[]=USER_ID1" \
-d "users[]=" \
-d "layout=auto" \
"https://api.eyeson.team/rooms/ACCESS_KEY/layout"
Layers
The API supports multiple visual layers:
Working with Layers
Available layer types:
- Background images (z-index: -1)
- Participant videos (z-index: 0)
- Overlay elements (z-index: 1)
Example:
curl -X POST \
-d "url=https://example.com/background.jpg" \
-d "z-index=-1" \
"https://api.eyeson.team/rooms/ACCESS_KEY/layers"
Next Steps
After mastering the basics:
- Explore advanced layouts
- Implement meeting controls
- Add recording features
- Integrate chat
Common Issues and Solutions
API Key not working
Check Authorization header format – Bearer prefix not needed
Can't join meeting
Verify access_key or guest_token validity
Layout not changing
Ensure correct ACCESS_KEY and disabled SFU mode. SFU-to-MCU switching requires 2+ participants
Layers not showing
Verify image URL access and SFU mode settings