Base URL & API Architecture
The Screen Chirp REST API is organized around RESTful principles, JSON payloads, predictable resource URIs, and HTTP response codes.
https://screenchirp.com/api/v1
https://myapp.com, https://admin.myapp.com). The API automatically responds with Smart CORS headers tailored to your domains.
Authentication
Authenticate your requests by including your secret API key in the standard Authorization HTTP header with the Bearer scheme.
Authorization: Bearer {8_char_prefix}_{secret}
curl -X GET "https://screenchirp.com/api/v1/ping" \
-H "Authorization: Bearer a1b2c3d4_8f1e2d3c4b5a6789..." \
-H "Content-Type: application/json"
Cost Translation & Resale Engine
When embedding Screen Chirp in software you sell to end-users or clients, you need to track exactly how much each meeting or recording costs so you can bill them or maintain a profit margin. Screen Chirp provides built-in Cost Translation on both REST APIs and Webhooks.
meeting.ended or recording.ready) includes an itemized cost or cost_estimate breakdown and a suggested_resale calculation with standard 30% margin. You can configure your billing software to automatically charge your client's card for the exact amount!
{
"data": {
"currency": "USD",
"total_cost": 0.3400,
"formatted_total": "$0.3400",
"summary": {
"meeting_uuid": "7fa9c18e4b2d41b084931a...",
"meeting_title": "Client Consultation",
"meeting_duration_minutes": 25,
"participant_count": 3,
"participant_minutes": 65,
"telephony_minutes": 0,
"recording_minutes": 25
},
"breakdown": {
"participant_video": { "units": 65, "rate": 0.0040, "subtotal": 0.2600 },
"recording": { "units": 25, "rate": 0.0500, "subtotal": 1.2500 },
"transcription": { "units": 25, "rate": 0.0300, "subtotal": 0.7500 }
},
"suggested_resale": {
"markup_percent": 30,
"suggested_price": 2.9380,
"formatted_resale_price": "$2.94"
}
}
}
Meetings Management API
| Parameter | Type | Description |
|---|---|---|
| title | string | Meeting title or subject (default: "API Meeting") |
| scheduled_start_at | string (ISO 8601) | Optional scheduled start time (e.g. 2026-09-25T14:00:00Z) |
| is_permanent | boolean | Set to true for reusable personal meeting rooms |
| waiting_room_enabled | boolean | Requires host to admit guests before they enter the call (default: false) |
| recording_enabled | boolean | Enables cloud video recording for this room |
| allow_guests | boolean | Allow anonymous external guests to enter (default: true) |
| passcode | string | Optional room entry passcode |
{
"title": "Q4 Strategic Planning",
"scheduled_start_at": "2026-09-25T18:00:00Z",
"waiting_room_enabled": true,
"recording_enabled": true,
"allow_screen_share": true
}
| Parameter | Type | Description |
|---|---|---|
| user_name required | string | Display name of the participant joining the call |
| user_email | string | Optional email to associate participant with an existing user |
| role | string | guest (default), user (team member), or host (admin) |
| expires_in | integer | Validity duration in seconds (default: 300) |
Webhooks System & Signatures
Subscribe to real-time events on your server whenever meetings start, participants join, recordings complete, or transcripts are generated. Each event is cryptographically signed using HMAC-SHA256.
X-Screenchirp-Signature: sha256=d3b07384d113edec49eaa6238ad5ff00...
X-Screenchirp-Event: meeting.ended
X-Screenchirp-Delivery-Id: sc_del_4a8b9c...
X-Screenchirp-Timestamp: 1790278400
X-Screenchirp-Version: 2026-09-01
| Event | Description | Cost Translation |
|---|---|---|
meeting.created | Fired when a meeting is booked | — |
meeting.started | Fired when first participant enters call | — |
meeting.ended | Fired when call ends or host ends meeting | Yes (Itemized Cost Breakdown) |
participant.joined | Participant connected to video room | — |
participant.left | Participant disconnected from call | Attendance Duration |
recording.ready | Cloud video recording finished composition | Yes (Recording Cost Included) |
transcription.ready | AI Whisper transcript ready | Yes (Transcription Cost Included) |
chirp.created | Meeting chat message posted | — |
const crypto = require('crypto');
function verifyScreenChirpWebhook(rawBody, signatureHeader, secret) {
const expectedSignature = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signatureHeader),
Buffer.from(expectedSignature)
);
}
SDKs & Embed Components
Drop video calls into your application in seconds using our modern Web Component or full JavaScript SDK.
<!-- 1. Include Script -->
<script src="https://screenchirp.com/assets/sdk/screenchirp-element.js"></script>
<!-- 2. Embed Anywhere in React, Vue, WordPress, or Plain HTML -->
<screenchirp-meeting
meeting-id="ROOM_UUID"
token="sc_emb_TOKEN_FROM_BACKEND"
layout="inline"
style="width: 100%; height: 600px; display: block;">
</screenchirp-meeting>
sdk/php/ScreenChirpClient.php, sdk/node/index.js, and sdk/python/screenchirp.py with zero external dependencies.