Build with EdCast
Programmatically create meetings, generate join links, and automate session management for your organization.
Authentication
Every API request must include your organization's secret key.
Pass your API key in the X-API-Key header on every request. Keys follow the format sk_live_xxxxxxxxxxxx.
X-API-Key: sk_live_your_secret_key_here
Base URL
All endpoints are relative to this URL. Use HTTPS only.
https://api.edcast.online/api/developer/v1
Set Content-Type: application/json on all POST requests.
Usage Tiers & Limits
Limits are tied to your organization's active subscription plan.
Create Meeting
Create an instant or scheduled meeting and receive a shareable join link.
Creates a new meeting for your organization. All meetings created via the API are public by default.
X-API-Key: sk_live_your_key_here
Content-Type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | No | "instant" (default) or "normal" |
title | string | No | Meeting name. Defaults to "Instant Meeting" |
end_date | string (ISO 8601) | No | End datetime for normal type. Free tier capped at 10 min. |
POST /api/developer/v1/meetings
X-API-Key: sk_live_xxxxxxxxxxxx
Content-Type: application/json
{ "type": "instant" }
POST /api/developer/v1/meetings
X-API-Key: sk_live_xxxxxxxxxxxx
Content-Type: application/json
{
"type": "normal",
"title": "Weekly Team Sync",
"end_date": "2026-05-01T15:00:00Z"
}
{
"success": true,
"data": {
"id": 1245,
"title": "Weekly Team Sync",
"meeting_code": "xH9kL2pQaB",
"join_link": "https://edcast.online/xH9kL2pQaB",
"visibility": "public",
"start_time": "2026-04-20T10:00:00Z",
"end_time": "2026-04-20T10:10:00Z",
"created_at": "2026-04-20T09:58:00Z"
}
}
List Meetings
Retrieve all meetings your organization created via the Developer API.
Returns all meetings belonging to your organization, newest first, with join links included.
X-API-Key: sk_live_your_key_here
{
"success": true,
"count": 2,
"data": [
{
"id": 1245,
"title": "Weekly Team Sync",
"meeting_code": "xH9kL2pQaB",
"join_link": "https://edcast.online/xH9kL2pQaB",
"visibility": "public",
"start_time": "2026-04-20T10:00:00Z",
"end_time": "2026-04-20T10:10:00Z",
"created_at": "2026-04-20T09:58:00Z"
}
]
}
Delete Meeting
Permanently delete a meeting and invalidate its join link.
Deletes the specified meeting. The join link is immediately invalidated. This action is irreversible.
X-API-Key: sk_live_your_key_here
| Parameter | Type | Description |
|---|---|---|
id | integer | The meeting ID returned at creation |
DELETE /api/developer/v1/meetings/1245
X-API-Key: sk_live_xxxxxxxxxxxx
{
"success": true,
"message": "Meeting and associated join link deleted successfully"
}
Join Links
Every meeting gets a unique, shareable link — no login required for participants.
https://edcast.online/{meeting_code}
The meeting_code is a 10-character unique identifier generated at creation. Distribute the join_link directly to participants via email, calendar invite, or chat.
Error Codes
All errors return a JSON object with an error or message field.
| HTTP Status | Error | Cause |
|---|---|---|
401 | Invalid API Key | X-API-Key is missing, invalid, or revoked. |
403 | Account inactive | Your organization has been deactivated. |
403 | Monthly limit reached | Free tier — 10 API meetings used for this month. |
400 | Validation error | A required field is missing or malformed. |
404 | Meeting not found | ID doesn't exist or belongs to another org. |
500 | Internal server error | Something went wrong on our end. |
{
"success": false,
"error": "Monthly limit reached",
"message": "Free tier organizations can only create 10 meetings per month via the API."
}
Quick Start
Full end-to-end example in JavaScript.
const API_KEY = 'sk_live_your_key_here';
const BASE = 'https://api.edcast.online/api/developer/v1';
const headers = { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' };
// 1 — Create an instant meeting
const res = await fetch(`${BASE}/meetings`, {
method: 'POST',
headers,
body: JSON.stringify({ type: 'instant', title: 'My Meeting' }),
});
const { data } = await res.json();
console.log('Join:', data.join_link);
// → https://edcast.online/xH9kL2pQaB
// 2 — List all meetings
const list = await fetch(`${BASE}/meetings`, { headers });
const { data: meetings } = await list.json();
// 3 — Delete a meeting
await fetch(`${BASE}/meetings/${data.id}`, { method: 'DELETE', headers });