How-to Guide

ScreenApp API Documentation

Written by
ScreenApp Team
Updated on
February 19, 2025
Contributors

Video & Audio Processing API

ScreenApp's API enables you to automatically transcribe, summarize, and analyze video and audio content. Perfect for businesses looking to process customer calls, training videos, and meeting recordings at scale.

Key Use Cases

  • Automatic Transcription & Summarization: Convert any video or audio into searchable text and concise summaries. Ideal for customer service teams, educational institutions, and content creators.
  • Knowledge Management: Build a searchable repository of video content with automatic transcripts, summaries, and AI-powered insights. Perfect for training materials and company knowledge bases.
  • Real-time Processing: Receive transcripts and summaries via webhooks as soon as recordings are processed. Great for integrating with CRM systems and customer service platforms.
  • Embedded Recording: Add professional-grade recording capabilities to your application with our embeddable recorder that handles both screen and audio capture.
✨ Popular Use Case: Customer service teams use our API to automatically transcribe support calls and generate summaries, which are then synced to their CRM through webhooks.
Get API Credentials in Dashboard →

Plan Requirements & API Access

To use the ScreenApp API, you'll need:

  1. An active Business plan subscription
  2. API credentials from your ScreenApp dashboard

Getting Your API Credentials

1. Log into your ScreenApp account
2. Navigate to Settings → Integration
3. Here you'll find your:

  • API Token
  • Team ID

Keep these credentials secure and never share them publicly.

Quick Start

Want to get started right away? Follow these steps to integrate ScreenApp into your website:

1. Install the Plugin

Add this code to your website's HTML:

<script
  charset="UTF-8" 
  type="text/javascript"
  src="https://screenapp.io/app/plugin.js">
</script>

<script>
  function callback({ id, url }) {
    // When the recording ends, you'll get:
    // - id: unique identifier for the recording
    // - url: direct access URL for the recording
  }

  function loadScreenApp() {
    const screenApp = new window.ScreenApp('YOUR_PLUGIN_TOKEN', callback);
    screenApp.mount("#screenapp-plugin");
  }
</script>

<div id="screenapp-plugin"></div>

2. Add the Trigger Button

Add a button or trigger element to your page:

<button onclick="loadScreenApp()">Start Recording</button>

3. Configure the Callback

Customize the callback function to handle recording completion:

function callback({ id, url }) {
  // Example: Send to your backend
  fetch('/api/recordings', {
    method: 'POST',
    body: JSON.stringify({ recordingId: id, recordingUrl: url })
  });
  
  // Example: Update UI
  document.getElementById('status').innerHTML = 
    `Recording saved! View it at ${url}`;
}

Authentication

All API requests require authentication. ScreenApp uses token-based authentication along with team-specific identifiers.

Credentials You'll Need

  • API Token: Your secret API key
  • Team ID: Your unique team identifier

Authentication Example

curl -X POST "https://api.screenapp.io/v2/files/upload" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "X-Team-ID: YOUR_TEAM_ID"

Key Use Cases

The ScreenApp API is particularly powerful for:

  • Video & Audio Summarization: Automatically generate transcripts and summaries from recordings, with results delivered via webhooks
  • Knowledge Management: Create a centralized repository of searchable recordings and their transcripts
  • Embedded Recording: Add recording capabilities to your application and receive processed outputs like transcripts
  • Integration Workflows: Connect with CRM systems, help desks, and other tools to automate your recording workflow
💡 Pro Tip: Use webhooks to automatically process recordings as they're completed. This allows you to build powerful automated workflows, such as adding transcripts to your knowledge base or updating CRM records with call summaries.

Core Concepts

Before diving into specific endpoints, let's understand the key concepts in ScreenApp:

  1. Recordings: Video and audio captures that can be uploaded and processed
  2. Teams: Groups that can share and manage recordings
  3. Webhooks: Real-time notifications for recording events and processing results
  4. Tags: Metadata that can be attached to recordings, teams, or user profiles

Recording Management

File Organization

ScreenApp organizes files using a team and folder structure:

  • Team: Your organization's workspace
  • Folders: Categories within your team (e.g., "Support Calls", "Training Videos")
  • Files: Individual recordings with metadata

Tagging and Metadata

Add organizational context to your recordings:

// Add tags to a recording
await fetch(`/v2/files/${fileId}/tag`, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    key: "category",
    value: "customer-support"
  })
});

// Add multiple tags
const tags = [
  { key: "priority", value: "high" },
  { key: "customer", value: "enterprise" },
  { key: "agent", value: "john.doe" }
];

for (const tag of tags) {
  await fetch(`/v2/files/${fileId}/tag`, {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_TOKEN',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(tag)
  });
}

Uploading Large Files

For files larger than 5MB, ScreenApp uses multipart uploads to ensure reliable file transfer.

1. Initialize Upload

Start by initializing a multipart upload session:

PUT /v2/files/upload/multipart/init/{teamId}/{folderId}
const response = await fetch('/v2/files/upload/multipart/init/team123/folder456', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN'
  }
});

const { uploadId, fileId } = await response.json();

Response:

{
  "uploadId": "abc123",
  "fileId": "file789"
}

2. Upload Parts

Upload each file part using the pre-signed URLs:

PUT /v2/files/upload/multipart/url/{teamId}/{folderId}/{fileId}/{uploadId}/{partNumber}
// For each file part
const response = await fetch('/v2/files/upload/multipart/url/team123/folder456/file789/abc123/1');
const { url } = await response.json();

await fetch(url, {
  method: 'PUT',
  body: filePart
});

3. Finalize Upload

After all parts are uploaded, finalize the upload:

PUT /v2/files/upload/multipart/finalize/{teamId}/{folderId}/{fileId}/{uploadId}

Webhook Integration

Setting Up Webhooks

To receive real-time updates about recordings, set up webhooks:

POST /v2/team/{teamId}/integrations/webhook
await fetch('/v2/team/team123/integrations/webhook', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    url: 'https://your-domain.com/webhook',
    name: 'Recording Updates'
  })
});

Webhook Events

Your webhook endpoint will receive events in this format:

{
  "event": "recording.completed",
  "fileId": "file789",
  "teamId": "team123",
  "data": {
    "url": "https://screenapp.io/recording/file789",
    "duration": 300,
    "status": "processed"
  }
}

Common events include:

  • recording.started
  • recording.completed
  • recording.processed
  • recording.failed

Advanced Features

AI Analysis

Use AI to analyze your recordings for insights:

// Request AI analysis of a recording
const analysis = await fetch(`/v2/files/${fileId}/ask/multimodal`, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    question: "What are the key discussion points?",
    options: {
      format: "bullet-points",
      maxLength: 500
    }
  })
});

Batch Operations

Efficiently manage multiple recordings:

// Tag multiple recordings
async function batchTag(fileIds, tag) {
  const promises = fileIds.map(fileId => 
    fetch(`/v2/files/${fileId}/tag`, {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(tag)
    })
  );
  
  await Promise.all(promises);
}

Error Handling

Common Error Codes

  • 400: Invalid request parameters
  • 403: AI usage limit exceeded
  • 404: Resource not found
  • 500: Server error

Getting Help

Need assistance? Here are your options:

  1. Visit our Help Center
  2. Check our API Reference
  3. Contact support at support@screenapp.io

Updates and Changelog

Version 2.0.0 (Current)

  • Added multipart upload support
  • Introduced AI-powered recording analysis
  • Enhanced webhook system with retry logic

Version 1.0.0 (Deprecated)

  • Initial API release
  • Basic recording functionality
  • Simple webhook support