Screen Chirp API Docs
Back to App OpenAPI Spec Get API Key

Screen Chirp Developer Platform

Integrate ultra-low latency WebRTC video conferencing, telephone voice conferencing, screensharing, cloud recording, AI transcripts, and cost translation directly into any SaaS, CRM, or web application.

Base URL & API Architecture

The Screen Chirp REST API is organized around RESTful principles, JSON payloads, predictable resource URIs, and HTTP response codes.

PRODUCTION API BASE URL
https://screenchirp.com/api/v1
CORS & Allowed Origins: When creating an API key, you can optionally define comma-separated allowed origins (e.g. 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.

HEADER FORMAT
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.

How to pass costs to your clients: Each billable event (like 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!
GET /api/v1/meetings/{uuid}/cost
Cost Breakdown per Meeting
Retrieves the complete, itemized cost statement for any completed or ongoing meeting.
SAMPLE RESPONSE (JSON)
{
  "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

POST /api/v1/meetings
Create a Meeting
Creates a new instant or scheduled meeting room with fine-grained security, waiting room, and permission controls.
ParameterTypeDescription
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
REQUEST BODY (JSON)
{
  "title": "Q4 Strategic Planning",
  "scheduled_start_at": "2026-09-25T18:00:00Z",
  "waiting_room_enabled": true,
  "recording_enabled": true,
  "allow_screen_share": true
}
POST /api/v1/meetings/{uuid}/embed-tokens
Generate Embed Token
Generates a secure, single-use token to embed this meeting room inside an iframe or SDK widget without exposing master API keys.
ParameterTypeDescription
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.

WEBHOOK EVENT HEADERS
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
Available Event Types
EventDescriptionCost Translation
meeting.createdFired when a meeting is booked—
meeting.startedFired when first participant enters call—
meeting.endedFired when call ends or host ends meetingYes (Itemized Cost Breakdown)
participant.joinedParticipant connected to video room—
participant.leftParticipant disconnected from callAttendance Duration
recording.readyCloud video recording finished compositionYes (Recording Cost Included)
transcription.readyAI Whisper transcript readyYes (Transcription Cost Included)
chirp.createdMeeting chat message posted—
VERIFYING WEBHOOK SIGNATURE (NODE.JS EXAMPLE)
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.

HTML5 WEB COMPONENT (<screenchirp-meeting>)
<!-- 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>
Drop-In Backend SDK Libraries: Official client wrappers are located in the repository under sdk/php/ScreenChirpClient.php, sdk/node/index.js, and sdk/python/screenchirp.py with zero external dependencies.