This walkthrough takes you from nothing to a working video room in a few minutes: get a token, create a room, open the join links, and close the room when you're done.
1. Obtain a token
Either token type can create rooms. Which one you use decides who owns the room afterwards: an Organization API Token creates the room inside its own organization and can manage it from then on, while an Instance API Token creates a room that belongs to no organization.
If you are integrating on behalf of a single organization, take the Organization API Token:
- Log in as an organization owner.
- Open the Integrations page.
- Copy the token from the API section.
For tenant-wide access, take an Instance API Token instead:
- Log in as an admin user into the MeetOne application.
- Navigate to the API Tokens section via the side menu, or directly at
https://acme.meetone.io/admin_ng/api_tokens. - Create a token, giving it a name and an expiry date.
- Copy the token from the details page.
Export it as an environment variable so it's easy to reuse in the examples below:
export MEETONE_API_TOKEN="eyJhbGciOiJIUzI1****"
See Authentication & API tokens for the full picture of what each token type can do.
2. Create a room
Send a POST request to /api/rooms with the required fields name, meeting_duration (in minutes), and scheduled_at:
curl -X POST "https://acme.meetone.io/api/rooms" \
-H "Authorization: Bearer $MEETONE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My new room",
"meeting_duration": 45,
"scheduled_at": "2024-08-23T15:19:36.378+02:00"
}'
A successful request returns 201 Created with the created room:
{
"name": "My new room",
"token": "f167d6f76f14991c",
"status": "active",
"access_token": "65a56167f28f6dec",
"guest_token": "2367668999959557",
"scheduled_at": "2024-08-23T15:19:36.378+02:00",
"meeting_duration": 45,
"return_url": "http://example.com/rooms/login",
"host_join_url": "http://www.example.com/r/7bbb22b73d4e4732",
"guest_join_url": "http://www.example.com/r/3d4e4722b7327bbb",
"enable_chat": true,
"enable_screenshare": true,
"enable_invites": true,
"permanent": false,
"created_at": "2024-08-23T15:19:36.378+02:00",
"updated_at": "2024-08-23T15:19:36.378+02:00"
}
Keep the token value — you'll need it to close the room later. If any required field is missing or invalid, the API responds with 400 Bad Request and a list of validation errors; see Errors & pagination.
scheduled_at only controls what's displayed to participants (the distance to the meeting start time). It has no technical effect — the room is usable from the moment it's created until it's closed.
3. Open the join links
The response contains two distinct join URLs:
host_join_url— for the host running the consultation.guest_join_url— share this with the guest joining the call.
Both URLs accept a name query parameter to pre-fill the participant's display name, for example ?name=John+Smith.
Treat access_token and host_join_url as sensitive — anyone with the host link gets host controls in the room. The guest_join_url is safe to share with the participant you invited.
4. Close the room when you're done
Once the call is over, close the room using its token (not access_token):
curl -X PUT "https://acme.meetone.io/api/rooms/f167d6f76f14991c/close" \
-H "Authorization: Bearer $MEETONE_API_TOKEN"
A successful close returns 204 No Content. A closed room can no longer be accessed. If you forget to close a room, a periodic cleanup job also closes any room whose scheduled_at is more than 24 hours in the past — but explicitly closing rooms when you know a call has ended is recommended.
Next steps
- Rooms endpoints — full CRUD reference.
- Room lifecycle — states a room moves through and how closing works in detail.
- Errors & pagination — interpreting error responses.
Related
Questions? Contact us at support@meetone.io.