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.

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: Create an API Project

  1. Go to the Developer Portal
  2. Click "Create New Project"
  3. Enter a name and description
  4. Your API key will be generated automatically

Step 4: 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 5: Start Using Your API Key

  • Include the API key in your request headers:
Authorization: YOUR_API_KEY

note
  • Free tier includes 500 minutes for developing and testing
  • To upgrade for additional usage, contact us.
  • Never share your API key publicly! If you did you can regenerate it.

How to Start Your First Meeting

This diagram illustrates the hierarchical relationship between core Eyeson concepts and how a video meeting is created and structured.

Required parameters

  • API Key in Authorization header
  • Endpoint: https://api.eyeson.team/rooms
  • user[name] to create a user

Custom Options Example

  • id in this case it unique for this room
  • SFU mode is disabled, to show the MCU mode strenghts
  • Video format is set to widescreen=true, a more modern ratio
info

MCU+ (Multipoint Control Unit) functionality, including layouts and layers, requires MCU mode to be active. By default, MCU mode activates automatically when more than two users join a meeting. Setting sfu_mode=disabled ensures MCU features remain accessible during single-user testing and development.

With your API Key ready, you can create your first meeting room with basic configurations:

cURL to create meeting room
curl -X POST \
-H "Authorization: YOUR_API_KEY" \
-d "id=standup" \
-d "user[name]=John Doe" \
-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.

Example response to the cURL request
Response Status: 201

{
"access_key": "HY4OGEJeoufkVO5mdJMwlbvc",
"ready": false,
"locked": false,
"room": {
"id": "standup",
"name": "demo",
"ready": true,
"started_at": "2024-12-09T14:25:02.254Z",
"shutdown": false,
"guest_token": "yIgliEpQkf1W9wqoEjNlLpCp"
},
"team": {
"name": "demo"
},
"user": {
"id": "6756fdc1755694e70cb72c80",
"room_id": "standup",
"name": "John Doe",
"avatar": null,
"guest": false,
"blocked": false,
"ready": false
},
"links": {
"self": "https://api.eyeson.team/rooms/HY4OGEJeoufkVO5mdJMwlbvc",
"gui": "https://app.eyeson.team/?HY4OGEJeoufkVO5mdJMwlbvc",
"guest_join": "https://app.eyeson.team/?guest=yIgliEpQkf1W9wqoEjNlLpCp",
"websocket": "https://api.eyeson.team/rt?access_key=HY4OGEJeoufkVO5mdJMwlbvc"
},
"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="
}
]
}
}
}
note

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
warning

The links[gui] is the host link and should be kept a secret as it can be used to start the meeting.

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 of a running meeting

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

info

See users for detailed documentation

Layers

The API supports multiple visual layers:

Working with layers

When adding visual information to the session, you can select the following layers:

  • Background images (z-index: -1)
  • Overlay images (z-index: 1)

A concrete example for this kind of request:

curl -X POST \
-d "url=https://docs.eyeson.com/img/overlay_example.png" \
-d "z-index=1" \
"https://api.eyeson.team/rooms/$ACCESS_KEY/layers"

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 use an existing layout
curl -X POST \
-d "layout=auto" \
-d "name=four" \
-d "users[]=" \
-d "users[]=$USER_ID" \
-d "users[]=" \
-d "users[]=" \
"https://api.eyeson.team/rooms/$ACCESS_KEY/layout"
info

Empty slots are filled with active participnats.

For custom layouts:

cURL to create a custom layout
curl -X POST \
-d "layout=custom" \
-d "name=custom-map" \
-d "users[]=" \
-d "users[]=$USER_ID" \
-d "users[]=" \
-d "map=[[20, 80, 400, 400, \"auto\"],[440, 160, 400, 400, \"contain\"],[860, 240, 400, 400, \"cover\"]]" \
"https://api.eyeson.team/rooms/$ACCESS_KEY/layout"
info

Empty slots are not filled with activite participants. The map content has to fit the selected resolution.

Next Steps

After mastering the basics:

Common Issues and Solutions

API Key authorization 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. Automatic SFU-to-MCU switching requires 2+ participants if the setting is not on disabled.

When switching the layout using layout=auto, you need to attach atleast one users[]= to the request for it to register properly.

When setting a layout with a custom map, you need to append the same amount of users[]= as the map slots.

Layers not showing

Verify that the image URL access is public and SFU mode is disabled.

Images larger than the video resolution will throw an Error 400 BAD REQUEST. Read more about layers.