ScreenApp API Documentatie v2.0.0
Met de API van ScreenApp kunt u video- en audio-inhoud automatisch transcriberen, samenvatten en analyseren. Perfect voor bedrijven die klantgesprekken, trainingsvideo’s en vergaderopnamen op schaal willen verwerken.
Belangrijkste Gebruiksscenario’s
- Automatische Transcriptie & Samenvatting: Converteer elke video of audio naar doorzoekbare tekst en beknopte samenvattingen. Ideaal voor klantenserviceteams, onderwijsinstellingen en makers van content.
- Kennismanagement: Bouw een doorzoekbare opslagplaats van video-inhoud met automatische transcripties, samenvattingen en AI-gestuurde inzichten. Perfect voor trainingsmateriaal en kennisbanken van bedrijven.
- Real-time Verwerking: Ontvang transcripties en samenvattingen via webhooks zodra opnamen zijn verwerkt. Geweldig voor integratie met CRM-systemen en klantenserviceplatforms.
- Geïntegreerde Opname: Voeg professionele opname mogelijkheden toe aan uw applicatie met onze integreerbare recorder die zowel scherm- als audio-opname afhandelt.
✨ Populaire Use Case: Klantenserviceteams gebruiken onze API om automatisch supportgesprekken te transcriberen en samenvattingen te genereren, die vervolgens via webhooks worden gesynchroniseerd met hun CRM.
API-referenties ophalen in Dashboard →
Planvereisten & API-toegang
Om de ScreenApp API te gebruiken, heeft u het volgende nodig:
- Een actief Business plan abonnement
- API-referenties van uw ScreenApp-dashboard
Uw API-referenties ophalen
- Log in op uw ScreenApp-account
- Ga naar Instellingen → Integratie
- Hier vindt u uw:
- API-token
- Team-ID
Bewaar deze inloggegevens veilig en deel ze nooit openbaar.
Snelle Start
Wilt u direct aan de slag? Volg deze stappen om ScreenApp in uw website te integreren:
1. Installeer de Plugin
Voeg deze code toe aan de HTML van uw website:
<script>
// Plugin installation code here
</script>
2. Voeg de Triggerknop toe
Voeg een knop of triggerelement toe aan uw pagina:
<button onclick="loadScreenApp()">Start Recording</button>
3. Configureer de Callback
Pas de callback-functie aan om de voltooiing van de opname af te handelen:
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}`;
}
Authenticatie
Alle API-verzoeken vereisen authenticatie. ScreenApp gebruikt tokengebaseerde authenticatie samen met teamspecifieke identificatiecodes.
Referenties die u nodig heeft
- API-token: uw geheime API-sleutel
- Team ID: uw unieke team-ID
Authenticatie Voorbeeld
curl -X POST "https://api.screenapp.io/v2/files/upload" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "X-Team-ID: YOUR_TEAM_ID"
Authenticatie Eindpunten
GET /auth/google
Doorsturen naar Google voor authenticatie
Query Parameters:
redirectUrl
- Gecodeerde URL om de gebruiker na succesvolle authenticatie door te sturenreferrerUrl
- Gecodeerde Referrer URLintent
- Intentie voor de gebruiker (bijv. “aanmelden”)
GET /auth/facebook
Doorsturen naar Facebook voor authenticatie
Query Parameters:
redirectUrl
- Gecodeerde URL om de gebruiker na succesvolle authenticatie door te sturenreferrerUrl
- Gecodeerde Referrer URLintent
- Intentie voor de gebruiker (bijv. “aanmelden”)
Kernconcepten
Voordat we ingaan op specifieke endpoints, laten we de belangrijkste concepten in ScreenApp begrijpen:
- Opnamen: Video- en audio-opnamen die kunnen worden geüpload en verwerkt
- Teams: Groepen die opnames kunnen delen en beheren
- Webhooks: Real-time meldingen voor opname-evenementen en verwerkingsresultaten
- Tags: Metadata die kunnen worden gekoppeld aan opnamen, teams of gebruikersprofielen
API Referentie
Team Management
POST /team/{teamId}/tag
Tag toevoegen aan team
Pad Parameters:
teamId
- ID van het team
Verzoek Body:
{
"key": "color",
"value": "red"
}
DELETE /team/{teamId}/tag
Tag verwijderen van team
Pad Parameters:
teamId
- ID van het team
Verzoek Body:
{
"key": "color"
}
Team Webhook Integratie
POST /team/{teamId}/integrations/webhook
Registreer een nieuwe webhook-URL voor het team
Pad Parameters:
teamId
- ID van het team
Verzoek Body:
{
"url": "https://example.com/webhook",
"name": "My Webhook"
}
Antwoorden:
200
- Webhook succesvol geregistreerd400
- Ongeldige aanvraag body500
- Interne serverfout
DELETE /team/{teamId}/integrations/webhook
Een webhook-URL voor het team afmelden
Pad Parameters:
teamId
- ID van het team
Query Parameters:
url
- De webhook-URL om af te melden
Antwoorden:
200
- Webhook succesvol afgemeld400
- Ongeldige aanvraag404
- Webhook-URL niet gevonden500
- Interne serverfout
GET /team/{teamId}/integrations/zapier/sample/list
Voorbeeldgegevens voor Zapier ophalen als een array
Pad Parameters:
teamId
- ID van het team
Antwoorden:
200
- Voorbeeldgegevens succesvol opgehaald404
- Voorbeeldbestand niet gevonden
Gebruikersintegraties
POST /integrations/webhook
Registreer een nieuwe webhook voor de gebruiker
Verzoek Body:
{
"url": "https://example.com/webhook",
"name": "My Webhook"
}
Antwoorden:
200
- Webhook succesvol geregistreerd400
- Ongeldige aanvraag body
DELETE /integrations/webhook
Een webhook voor de gebruiker afmelden
Query Parameters:
url
- De webhook-URL om af te melden
Antwoorden:
200
- Webhook succesvol afgemeld400
- Ongeldige aanvraag404
- Webhook-URL niet gevonden
Webhook Events
Uw webhook endpoint ontvangt gebeurtenissen in dit formaat:
{
"event": "recording.completed",
"fileId": "file789",
"teamId": "team123",
"data": {
"url": "https://screenapp.io/recording/file789",
"duration": 300,
"status": "processed"
}
}
Veel voorkomende evenementen zijn:
recording.started
recording.completed
recording.processed
recording.failed
Bestandsbeheer
POST /files/{fileId}/tag
Tag toevoegen aan bestand
Pad Parameters:
fileId
- ID van het bestand
Verzoek Body:
{
"key": "color",
"value": "red"
}
DELETE /files/{fileId}/tag
Tag verwijderen van bestand
Pad Parameters:
fileId
- ID van het bestand
Verzoek Body:
{
"key": "color"
}
POST /files/{fileId}/ask/multimodal
Stel een vraag over een bestand met behulp van meerdere AI-modellen
Pad Parameters:
fileId
- ID van het te analyseren bestand
Verzoek Body:
{
"promptText": "What are the key points discussed?",
"mediaAnalysisOptions": {
"transcript": {
"segments": [
{
"start": 0,
"end": 120
}
]
},
"video": {
"segments": [
{
"start": 0,
"end": 120
}
]
},
"screenshots": {
"timestamps": [30, 60, 90]
}
}
}
Antwoorden:
200
- Vraag succesvol verwerkt403
- AI-gebruikslimiet overschreden500
- Serverfout
Bestand uploaden
POST /files/upload/{teamId}/{folderId}/url
Genereer vooraf ondertekende URL’s voor het uploaden van bestanden
Pad Parameters:
teamId
- ID van het teamfolderId
- ID van de map
Verzoek Body:
{
"files": [
{
"contentType": "video/mp4",
"name": "meeting-recording.mp4"
}
]
}
Antwoorden:
200
- Upload-URL’s succesvol gegenereerd400
- Ongeldige aanvraagparameters500
- Serverfout
POST /files/upload/{teamId}/{folderId}/finalize
Geüploade bestanden afronden
Pad Parameters:
teamId
- ID van het teamfolderId
- ID van de map
Verzoek Body:
{
"file": {
"fileId": "file123",
"contentType": "video/mp4",
"name": "Sales Call",
"description": "Weekly sales call with customer",
"recorderName": "John Doe",
"recorderEmail": "john.doe@example.com"
}
}
Antwoorden:
200
- Bestand uploaden succesvol afgerond400
- Ongeldige aanvraagparameters403
- Uploadlimiet overschreden500
- Serverfout
Multipart Upload (voor grote bestanden)
PUT /files/upload/multipart/init/{teamId}/{folderId}
Initialiseer een multipart upload voor een groot bestand
Pad Parameters:
teamId
- ID van het teamfolderId
- ID van de map
Verzoek Body:
{
"contentType": "video/mp4"
}
Antwoorden:
200
- Upload succesvol geïnitialiseerd400
- Ongeldige aanvraagparameters500
- Serverfout
Antwoordvoorbeeld:
{
"success": true,
"data": {
"fileId": "file789",
"uploadId": "upload123"
}
}
PUT /files/upload/multipart/url/{teamId}/{folderId}/{fileId}/{uploadId}/{partNumber}
Upload-URL ophalen voor een specifiek onderdeel
Pad Parameters:
teamId
- ID van het teamfolderId
- ID van de mapfileId
- ID van het bestand dat wordt geüploaduploadId
- ID van de multipart uploadsessiepartNumber
- Onderdeelnummer (1-10000)
Verzoek Body:
{
"contentType": "video/mp4"
}
Antwoorden:
200
- Upload-URL succesvol gegenereerd400
- Ongeldige aanvraagparameters500
- Serverfout
Antwoordvoorbeeld:
{
"success": true,
"data": {
"uploadUrl": "https://presigned-s3-url.com/part1"
}
}
PUT /files/upload/multipart/finalize/{teamId}/{folderId}/{fileId}/{uploadId}
Een multipart upload afronden
Pad Parameters:
teamId
- ID van het teamfolderId
- ID van de mapfileId
- ID van het bestand dat wordt geüploaduploadId
- ID van de multipart uploadsessie
Verzoek Body:
{
"file": {
"contentType": "video/mp4",
"recorderName": "John Doe",
"recorderEmail": "john@example.com",
"name": "My Recording",
"description": "A recorded video session",
"notes": [
{
"text": "Important point discussed",
"timestamp": 1234567890
}
]
}
}
Antwoorden:
200
- Upload succesvol afgerond400
- Ongeldige aanvraagparameters404
- Actieve upload niet gevonden500
- Serverfout
PUT /files/upload/multipart/fallback/{teamId}/{folderId}/{fileId}/{partNumber}
Bestandsonderdeel uploaden via backend (fallback)
Pad Parameters:
teamId
- ID van het teamfolderId
- ID van de mapfileId
- ID van het bestand dat wordt geüploadpartNumber
- Onderdeelnummer (1-10000)
Formuliergegevens:
file
- Het te uploaden bestandsonderdeelcontentType
- MIME-type van het bestand dat wordt geüpload
Antwoorden:
200
- Onderdeel succesvol geüpload400
- Ongeldige aanvraagparameters500
- Serverfout
Account Management
POST /v2/account/tag
Een tag toevoegen aan de geverifieerde gebruiker
Verzoek Body:
{
"key": "color",
"value": "red"
}
Antwoorden:
200
- Tag succesvol toegevoegd400
- Ongeldige aanvraagparameters
PUT /account/profile
Het profiel van de geverifieerde gebruiker bijwerken
Verzoek Body:
{
"firstName": "John",
"lastName": "Doe",
"name": "John Doe",
"gender": "male",
"userType": "user",
"company": "Acme Inc",
"role": "Developer",
"goals": "Learn new technologies",
"phoneNumber": "+1234567890",
"location": "San Francisco, CA",
"website": "https://example.com",
"picture": "https://example.com/avatar.jpg",
"provider": "local",
"providerId": "12345",
"primaryField": "development"
}
Antwoorden:
200
- Profiel succesvol bijgewerkt400
- Ongeldige aanvraagparameters
Geavanceerde Functies
AI Analyse
Gebruik AI om uw opnames te analyseren voor inzichten:
// 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({
promptText: "What are the key discussion points?",
mediaAnalysisOptions: {
transcript: {
segments: [{ start: 0, end: 300 }]
},
video: {
segments: [{ start: 0, end: 300 }]
}
}
})
});
Batchbewerkingen
Beheer meerdere opnamen efficiënt:
// 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);
}
Foutafhandeling
Veelvoorkomende Foutcodes
400
: Ongeldige aanvraagparameters403
: AI-gebruikslimiet overschreden of ongeautoriseerde toegang404
: Resource niet gevonden500
: Serverfout
Foutreactieformaat
Foutreacties volgen doorgaans dit formaat:
{
"success": false,
"message": "Detailed error message"
}
Voorbeelden
Team Webhooks instellen
Met Webhooks kunt u real-time updates ontvangen wanneer opnames worden verwerkt:
// Register a new webhook for your team
async function registerTeamWebhook(teamId, webhookUrl, webhookName) {
const response = await fetch(`/v2/team/${teamId}/integrations/webhook`, {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: webhookUrl,
name: webhookName
})
});
return await response.json();
}
// Example usage
const result = await registerTeamWebhook(
'team123',
'https://your-domain.com/webhooks/screenapp',
'Recording Updates'
);
Een groot bestand uploaden en verwerken
Gebruik voor bestanden groter dan 100 MB de multipart upload flow:
// 1. Initialize upload
const initResponse = await fetch(`/v2/files/upload/multipart/init/${teamId}/${folderId}`, {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
contentType: 'video/mp4'
})
});
const { data: { fileId, uploadId } } = await initResponse.json();
// 2. Split file into chunks and upload each part
const CHUNK_SIZE = 5 * 1024 * 1024; // 5MB chunks
const totalParts = Math.ceil(file.size / CHUNK_SIZE);
for (let partNumber = 1; partNumber <= totalParts; partNumber++) {
// Get upload URL for this part
const urlResponse = await fetch(
`/v2/files/upload/multipart/url/${teamId}/${folderId}/${fileId}/${uploadId}/${partNumber}`,
{
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
contentType: 'video/mp4'
})
}
);
const { data: { uploadUrl } } = await urlResponse.json();
// Create the chunk from the file
const start = (partNumber - 1) * CHUNK_SIZE;
const end = Math.min(start + CHUNK_SIZE, file.size);
const chunk = file.slice(start, end);
// Upload the chunk directly to S3
await fetch(uploadUrl, {
method: 'PUT',
body: chunk,
headers: {
'Content-Type': 'video/mp4'
}
});
}
// 3. Finalize the upload
const finalizeResponse = await fetch(
`/v2/files/upload/multipart/finalize/${teamId}/${folderId}/${fileId}/${uploadId}`,
{
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
file: {
contentType: 'video/mp4',
name: 'Customer Meeting Recording',
description: 'Quarterly review with client',
recorderName: 'Jane Smith',
recorderEmail: 'jane@example.com'
}
})
}
);