Partner API

Build on Meetn

Provision accounts, rooms, hosts, and event registrations programmatically. The API is backwards-compatible with the original Meetn partner API.

Base URL

https://api.meetn.com/api

Every endpoint is a POST with a JSON body. Paths below are relative to this base.

Authentication

Send your PartnerGUID in the body, plus either your partner_token or a request from an allow-listed IP. Existing partners keep their current credentials; contact us to issue a fresh API key.

Responses

Responses carry the status in the body: success is { "status": 200, "data": … }; errors are { "status": 4xx, "msg": [ … ] }. The HTTP status mirrors the body.

curl https://api.meetn.com/api/company/room/info \
  -H 'content-type: application/json' \
  -d '{ "PartnerGUID": "<your-guid>", "partner_token": "<your-token>", "Room": "acme" }'

Rooms

Look up, check, and (with write access) create or rename rooms.

Room info
/company/room/info
read

Account + plan details for a room.

Request
  • Roomrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "data": {
    "id": "de502b29be",
    "email": "[email protected]",
    "room": "blockchainjp",
    "room_uuid": "39a079dd7f",
    "activation": "06/14/2024",
    "plan": "pro"
  }
}
Room available
/company/room/name/available
read

Is a room name free? (Names are globally unique.)

Request
  • Roomrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "msg": ["Room: acme is available."] }
// taken:
{ "status": 422, "msg": ["That room name is already taken."] }
Add room
/company/contact/room/create
write

Claim a room for an existing account.

Request
  • EmailAddressrequired— Owner of the account.
  • Roomrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "data": [{ "id": "de502b29be", "email": "[email protected]", "room": "acme", "room_uuid": "…" }]
}
Resend room invite
/company/room/invite/resend
write

Re-send the “Your room is ready” email (room link + sign-in) to the room’s owner — for when a customer loses the original. The same email is sent automatically when a room is created. Defaults to the account owner; pass EmailAddress to target a specific host of the room. Rate-limited per recipient.

Request
  • Roomrequired
  • EmailAddressoptional— Defaults to the account owner; if set, must be a host of the room.
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "msg": ["Invite email sent."] }
// too many resends for this recipient recently:
{ "status": 429, "msg": ["This invite was re-sent too many times recently. Please try again later."] }
Room name change
/company/room/name/change
write

Rename a room.

Request
  • CurrentRoomNamerequired
  • NewRoomNamerequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "data": [{ "id": "…", "email": "[email protected]", "room": "acme-2", "room_uuid": "…" }]
}
Room plan change
/company/room/plan/change
write

Change a room's plan among the licenses your account already owns, or downgrade to free to release a license. Does not purchase a license — if no license of the target plan is free, it returns an error.

Request
  • Roomrequired
  • Planrequired— free | pro | ultimate
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "msg": ["Room plan changed successfully."] }
// no free license of the target plan:
{ "status": 422, "msg": ["No pro license available. Downgrade another room to free a license, or contact support to add one."] }

Accounts

Provision and look up accounts owned by your partner.

Add account
/company/contact/create
write

Create an account (workspace) + owner + optional room.

Request
  • CompanyNamerequired
  • Nameoptional— Owner display name.
  • EmailAddressrequired
  • Planrequired— free | pro | ultimate
  • Roomoptional— Claim a room at creation.
  • AffiliateIDoptional
  • BonusRoomsoptional
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "data": [{ "id": "…", "email": "[email protected]", "room": "acme", "room_uuid": "…" }]
}
Deactivate account
/company/contact/deactivate
write

Turn off access when a customer's subscription ends. Reversible, and deletes nothing.

Request
  • EmailAddressrequired— Account owner.
  • Reasonoptional— Stored on the account for support.
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "msg": ["Account deactivated successfully."] }
Reactivate account
/company/contact/reactivate
write

Restore a deactivated account when the customer resubscribes.

Request
  • EmailAddressrequired— Account owner.
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "msg": ["Account reactivated successfully."] }
Get room(s) by email
/company/get/email/room
read

All rooms for an account, by owner email.

Request
  • EmailAddressrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "data": [{
    "id": "de502b29be", "email": "[email protected]",
    "rooms": [{ "room": "blockchainjp", "room_id": "39a079dd7f", "plan": "pro", "created": "…" }]
  }]
}
Get email by room
/company/get/room/email
read

Owner email for a room.

Request
  • Roomrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "data": { "id": "…", "email": "[email protected]", "room": "blockchainjp", "room_uuid": "…" } }
Get room(s) by account id
/company/get/id/room
read

All rooms for an account, by account id.

Request
  • idrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "data": [{ "id": "…", "email": "…", "rooms": [ … ] }] }
Get email by account id
/company/get/id/email
read

Owner email for an account id.

Request
  • idrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "data": { "id": "…", "email": "[email protected]" } }
Get account by room uuid
/company/get/rooms
read

The owning account + its rooms, by room uuid.

Request
  • room_uuidrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "data": [{ "id": "…", "email": "…", "rooms": [ … ] }] }
Get email by room uuid
/company/get/email
read

Owner email for a room uuid.

Request
  • room_uuidrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "data": { "id": "…", "email": "…", "room": "…", "room_uuid": "…" } }

Hosts & admins

List and (with write access) grant or remove per-room host/admin access.

List hosts / admins
/company/room/permission/list
read

Owner, admins, and hosts assigned to a room.

Request
  • Roomrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "owner": { "name": "Owner", "email": "[email protected]" },
  "data": [{ "name": "…", "email": "…", "owner": "N", "admin": "N", "host": "Y", "guest": "N", "type": "permission", "phone": null }],
  "records": 1
}
Add host / admin
/company/room/permission/create
write

Grant host or admin on a room.

Request
  • EmailAddressrequired
  • Roomrequired
  • Permissionrequired— host | admin
  • Nameoptional
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "msg": ["Room permission added successfully."] }
Delete host / admin
/company/room/permission/delete
write

Remove host/admin from a room.

Request
  • EmailAddressrequired
  • Roomrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "msg": ["Room permission deleted successfully."] }

Events & registrations

Create and list events, register attendees with referral tracking, and pull attendance reports.

Create event
/event/create
write

Schedule a one-off event on a room from your own platform.

Request
  • roomrequired
  • start_utcrequired— ISO 8601; must be in the future.
  • nameoptional
  • duration_minutesoptional— Default 60.
  • timezoneoptional— IANA name for display; default UTC.
  • registrationoptional— "1"/"true" requires attendees to register before joining.
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "event_id": "…", "event_url": "https://meetn.com/j/…", "name": "…", "start_utc": "…", "duration_minutes": 60, "timezone": "UTC", "registration": false }
Events & recordings by date range
/list/events/recording/by-date-range
read

Events/recordings for a room within a window.

Request
  • roomrequired
  • start_daterequired— ISO 8601
  • end_daterequired— ISO 8601
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "data": [{ "event_id": "…", "public_name": "…", "private_name": "…", "timezone": "America/New_York", "start_utc": "…", "status": "Completed" }]
}
Event registrants
/list/event/registrants
read

Registrant list for an event.

Request
  • event_idrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "data": [{ "registration_id": "…", "name": "…", "email": "…", "phone": "…", "phone_prefix": null, "created": "…", "comment": "", "faid": null, "ourl": null }]
}
Register user for event
/register/user/event
write

Register an attendee, optionally with referral tracking. The returned join_url is the attendee's personal event link - use it as their Join button; alternatively append ?faid=<faid> to the plain event URL. Re-registering the same email updates the registration: fields you send are set, fields you omit keep their previous values.

Request
  • event_idrequired
  • namerequired
  • emailrequired
  • faidoptional— Your own attendee id (string or number); rides the join link.
  • ourloptional— Override URL (http/https) - the referral-link button shows this attendee THIS link when the referral gate passes.
  • referrer_emailoptional— The promoter who referred this attendee.
  • referrer_prooptional— "1"/"true" when the referrer is pro on your platform.
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "registration_id": "…", "event_id": "…", "name": "…", "email": "…", "join_url": "https://meetn.com/j/…?r=…", "referrer_paying": true, "created": "…" }
Event attendance report
/list/event/attendance
read

Per-attendee engagement log (entered/exited/chatted/raisedhand) with your faid attribution, plus minute-by-minute attendee counts. Works mid-event and after; hosts and staff are excluded.

Request
  • event_idrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{
  "status": 200,
  "event_status": "ended",
  "session_started_utc": "…",
  "session_ended_utc": "…",
  "attendees": [{ "name": "…", "faid": "…", "email": "…", "registration_id": "…", "entered": "…", "exited": "…", "events": [{ "code": "entered", "at": "…" }] }],
  "minute_counts": [{ "minute": "…", "attendee_count": 42 }]
}
Set event webhook URL
/event/webhookurl
write

Store a webhook URL for an event.

Request
  • event_idrequired
  • webhookurlrequired
  • PartnerGUIDrequired— Your partner GUID.
  • partner_tokenoptional— Your API token (or authenticate by allow-listed IP).
Response
{ "status": 200, "data": [] }

Not available

These legacy endpoints no longer have an equivalent. They return a clear 422 so existing integrations fail gracefully.

  • /company/contact/reset/passwordSign-in is passwordless (magic link) — there is no password to reset.
  • /user/cancel/accountThis verb meant a permanent delete. Use /company/contact/deactivate instead, which turns off access without destroying the customer's data.