Skip to main content

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.

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

  1. Visit the Developer Portal
  2. 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

  1. Log in to the Eyeson Developer Portal
  2. Go to "Your API Project" or "Manage your projects"

Step 4: Create an API Project

  1. Click "Create New Project"
  2. Enter a name and description
  3. 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:

cURL to create 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 to the cURL request
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:

  1. self: API endpoint for the room
  2. gui: Direct link to join the meeting
  3. guest_join: Shareable link for guests
  4. websocket: WebSocket connection endpoint

Users, Keys and Tokens

The API supports three user types:

  1. API Key User
    Required for room management and server-side operations
info

API Key operations should be performed server-side for security, while Access Key operations are safe client-side

  1. Access Key User
    Used for standard meeting operations and layout control

  2. Guest User
    Temporary participant with limited meeting access via guest token

note

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 to change the layout
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:

cURL to create a custom layout
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:

  1. Background images (z-index: -1)
  2. Participant videos (z-index: 0)
  3. 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