ScreenApp API ve SDK Dokümantasyonu

ScreenApps API, video ve ses içeriklerini otomatik olarak yazıya dökmenizi, özetlemenizi ve analiz etmenizi sağlar

Yazan ScreenApp Ekibi

ScreenApp API Dokümantasyonu v2.0.0

ScreenApp’in API’si, video ve ses içeriklerini otomatik olarak yazıya dökmenizi, özetlemenizi ve analiz etmenizi sağlar. Müşteri aramalarını, eğitim videolarını ve toplantı kayıtlarını ölçekli olarak işlemek isteyen işletmeler için mükemmeldir.

Temel Kullanım Alanları

✨ Popüler Kullanım Alanı: Müşteri hizmetleri ekipleri, destek çağrılarını otomatik olarak yazıya dökmek ve özetler oluşturmak için API’mizi kullanır ve bunlar daha sonra web kancaları aracılığıyla CRM’lerine senkronize edilir.

Kontrol Panelinde API Kimlik Bilgilerini Alın →

Plan Gereksinimleri ve API Erişimi

ScreenApp API’sini kullanmak için şunlara ihtiyacınız olacak:

  1. Aktif bir Business plan aboneliği
  2. ScreenApp kontrol panelinizden API kimlik bilgileri

API Kimlik Bilgilerinizi Alma

  1. ScreenApp hesabınıza giriş yapın
  2. Ayarlar → Entegrasyon bölümüne gidin
  3. Burada şunları bulacaksınız:
    • API Anahtarı
    • Takım Kimliği

Bu kimlik bilgilerini güvende tutun ve asla herkese açık olarak paylaşmayın.

Hızlı Başlangıç

Hemen başlamak ister misiniz? ScreenApp’i web sitenize entegre etmek için şu adımları izleyin:

1. Eklentiyi Yükleyin

Bu kodu web sitenizin HTML’sine ekleyin:

<script>
  // Eklenti yükleme kodu buraya
</script>

2. Tetikleme Düğmesini Ekleyin

Sayfanıza bir düğme veya tetikleme öğesi ekleyin:

<button onclick="loadScreenApp()">Kaydı Başlat</button>

3. Geri Çağırmayı Yapılandırın

Kayıt tamamlamayı işlemek için geri çağırma işlevini özelleştirin:

function callback({ id, url }) {
  // Örnek: Arka ucunuza gönderin
  fetch('/api/recordings', {
    method: 'POST',
    body: JSON.stringify({ recordingId: id, recordingUrl: url })
  });
  
  // Örnek: UI'yı Güncelleyin
  document.getElementById('status').innerHTML = 
    `Kayıt kaydedildi! Şu adreste görüntüleyin: ${url}`;
}

Kimlik Doğrulama

Tüm API istekleri kimlik doğrulama gerektirir. ScreenApp, takım özel tanımlayıcılarıyla birlikte belirteç tabanlı kimlik doğrulama kullanır.

İhtiyacınız Olacak Kimlik Bilgileri

Kimlik Doğrulama Örneği

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

Kimlik Doğrulama Uç Noktaları

GET /auth/google

Kimlik doğrulama için Google’a yönlendirin

Sorgu Parametreleri:

GET /auth/facebook

Kimlik doğrulama için Facebook’a yönlendirin

Sorgu Parametreleri:

Temel Kavramlar

Belirli uç noktalara dalmadan önce, ScreenApp’teki temel kavramları anlayalım:

  1. Kayıtlar: Yüklenebilen ve işlenebilen video ve ses yakalamaları
  2. Takımlar: Kayıtları paylaşabilen ve yönetebilen gruplar
  3. Web Kancaları: Kayıt olayları ve işleme sonuçları için gerçek zamanlı bildirimler
  4. Etiketler: Kayıtlara, takımlara veya kullanıcı profillerine eklenebilen meta veriler

API Referansı

Takım Yönetimi

POST /team/{teamId}/tag

Takıma etiket ekle

Yol Parametreleri:

İstek Gövdesi:

{
  "key": "color",
  "value": "red"
}

DELETE /team/{teamId}/tag

Takımdan etiketi kaldır

Yol Parametreleri:

İstek Gövdesi:

{
  "key": "color"
}

Takım Web Kancası Entegrasyonu

POST /team/{teamId}/integrations/webhook

Takım için yeni bir web kancası URL’si kaydet

Yol Parametreleri:

İstek Gövdesi:

{
  "url": "https://example.com/webhook",
  "name": "Web Kancam"
}

Yanıtlar:

DELETE /team/{teamId}/integrations/webhook

Takım için bir web kancası URL’sinin kaydını sil

Yol Parametreleri:

Sorgu Parametreleri:

Yanıtlar:

GET /team/{teamId}/integrations/zapier/sample/list

Zapier için örnek verileri bir dizi olarak al

Yol Parametreleri:

Yanıtlar:

Kullanıcı Entegrasyonları

POST /integrations/webhook

Kullanıcı için yeni bir web kancası kaydet

İstek Gövdesi:

{
  "url": "https://example.com/webhook",
  "name": "Web Kancam"
}

Yanıtlar:

DELETE /integrations/webhook

Kullanıcı için bir web kancasının kaydını sil

Sorgu Parametreleri:

Yanıtlar:

Web Kancası Olayları

Web kancası uç noktanız, olayları bu biçimde alacaktır:

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

Yaygın olaylar şunları içerir:

Dosya Yönetimi

POST /files/{fileId}/tag

Dosyaya etiket ekle

Yol Parametreleri:

İstek Gövdesi:

{
  "key": "color",
  "value": "red"
}

DELETE /files/{fileId}/tag

Dosyadan etiketi kaldır

Yol Parametreleri:

İstek Gövdesi:

{
  "key": "color"
}

POST /files/{fileId}/ask/multimodal

Birden çok AI modeli kullanarak bir dosya hakkında soru sorun

Yol Parametreleri:

İstek Gövdesi:

{
  "promptText": "Tartışılan temel noktalar nelerdir?",
  "mediaAnalysisOptions": {
    "transcript": {
      "segments": [
        {
          "start": 0,
          "end": 120
        }
      ]
    },
    "video": {
      "segments": [
        {
          "start": 0,
          "end": 120
        }
      ]
    },
    "screenshots": {
      "timestamps": [30, 60, 90]
    }
  }
}

Yanıtlar:

Dosya Yükleme

POST /files/upload/{teamId}/{folderId}/url

Dosya yüklemeleri için önceden imzalanmış URL’ler oluştur

Yol Parametreleri:

İstek Gövdesi:

{
  "files": [
    {
      "contentType": "video/mp4",
      "name": "meeting-recording.mp4"
    }
  ]
}

Yanıtlar:

POST /files/upload/{teamId}/{folderId}/finalize

Yüklenen dosyaları tamamla

Yol Parametreleri:

İstek Gövdesi:

{
  "file": {
    "fileId": "file123",
    "contentType": "video/mp4",
    "name": "Satış Çağrısı",
    "description": "Müşteriyle haftalık satış çağrısı",
    "recorderName": "John Doe",
    "recorderEmail": "john.doe@example.com"
  }
}

Yanıtlar:

Çok Parçalı Yükleme (büyük dosyalar için)

PUT /files/upload/multipart/init/{teamId}/{folderId}

Büyük bir dosya için çok parçalı bir yükleme başlat

Yol Parametreleri:

İstek Gövdesi:

{
  "contentType": "video/mp4"
}

Yanıtlar:

Yanıt Örneği:

{
  "success": true,
  "data": {
    "fileId": "file789",
    "uploadId": "upload123"
  }
}

PUT /files/upload/multipart/url/{teamId}/{folderId}/{fileId}/{uploadId}/{partNumber}

Belirli bir bölüm için yükleme URL’si al

Yol Parametreleri:

İstek Gövdesi:

{
  "contentType": "video/mp4"
}

Yanıtlar:

Yanıt Örneği:

{
  "success": true,
  "data": {
    "uploadUrl": "https://presigned-s3-url.com/part1"
  }
}

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

Çok parçalı bir yüklemeyi tamamla

Yol Parametreleri:

İstek Gövdesi:

{
  "file": {
    "contentType": "video/mp4",
    "recorderName": "John Doe",
    "recorderEmail": "john@example.com",
    "name": "Kaydım",
    "description": "Kaydedilmiş bir video oturumu",
    "notes": [
      {
        "text": "Tartışılan önemli nokta",
        "timestamp": 1234567890
      }
    ]
  }
}

Yanıtlar:

PUT /files/upload/multipart/fallback/{teamId}/{folderId}/{fileId}/{partNumber}

Dosya bölümünü arka uç aracılığıyla yükle (geri dönüş)

Yol Parametreleri:

Form Verileri:

Yanıtlar:

Hesap Yönetimi

POST /v2/account/tag

Kimliği doğrulanmış kullanıcıya bir etiket ekle

İstek Gövdesi:

{
  "key": "color",
  "value": "red"
}

Yanıtlar:

PUT /account/profile

Kimliği doğrulanmış kullanıcının profilini güncelle

İstek Gövdesi:

{
  "firstName": "John",
  "lastName": "Doe",
  "name": "John Doe",
  "gender": "male",
  "userType": "user",
  "company": "Acme Inc",
  "role": "Developer",
  "goals": "Yeni teknolojiler öğrenmek",
  "phoneNumber": "+1234567890",
  "location": "San Francisco, CA",
  "website": "https://example.com",
  "picture": "https://example.com/avatar.jpg",
  "provider": "local",
  "providerId": "12345",
  "primaryField": "development"
}

Yanıtlar:

Gelişmiş Özellikler

AI Analizi

İçgörüler için kayıtlarınızı analiz etmek için AI’yı kullanın:

// Bir kaydın AI analizini isteyin
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: "Temel tartışma noktaları nelerdir?",
    mediaAnalysisOptions: {
      transcript: {
        segments: [{ start: 0, end: 300 }]
      },
      video: {
        segments: [{ start: 0, end: 300 }]
      }
    }
  })
});

Toplu İşlemler

Birden çok kaydı verimli bir şekilde yönetin:

// Birden çok kaydı etiketleyin
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);
}

Hata Yönetimi

Yaygın Hata Kodları

Hata Yanıt Biçimi

Hata yanıtları genellikle şu biçimi izler:

{
  "success": false,
  "message": "Ayrıntılı hata mesajı"
}

Örnekler

Takım Web Kancaları Ayarlama

Web kancaları, kayıtlar işlendiğinde gerçek zamanlı güncellemeler almanızı sağlar:

// Takımınız için yeni bir web kancası kaydedin
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();
}

// Örnek kullanım
const result = await registerTeamWebhook(
  'team123',
  'https://your-domain.com/webhooks/screenapp',
  'Kayıt Güncellemeleri'
);

Büyük Bir Dosyayı Yükleme ve İşleme

100 MB’tan büyük dosyalar için çok parçalı yükleme akışını kullanın:

// 1. Yüklemeyi başlat
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. Dosyayı parçalara ayırın ve her bölümü yükleyin
const CHUNK_SIZE = 5 * 1024 * 1024; // 5MB parçalar
const totalParts = Math.ceil(file.size / CHUNK_SIZE);

for (let partNumber = 1; partNumber <= totalParts; partNumber++) {
  // Bu bölüm için yükleme URL'sini alın
  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();
  
  // Dosyadan parçayı oluşturun
  const start = (partNumber - 1) * CHUNK_SIZE;
  const end = Math.min(start + CHUNK_SIZE, file.size);
  const chunk = file.slice(start, end);
  
  // Parçayı doğrudan S3'e yükleyin
  await fetch(uploadUrl, {
    method: 'PUT',
    body: chunk,
    headers: {
      'Content-Type': 'video/mp4'
    }
  });
}

// 3. Yüklemeyi tamamlayın
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: 'Müşteri Toplantı Kaydı',
        description: 'Müşteriyle üç aylık inceleme',
        recorderName: 'Jane Smith',
        recorderEmail: 'jane@example.com'
      }
    })
  }
);

Kontrol Panelinde API Kimlik Bilgilerini Alın →