Skip to Content

Medya

Sosyal medya gönderilerinize ekleyeceğiniz görsel ve video dosyalarını yükleyin, yönetin ve medya kütüphanenizi sorgulayın.

Desteklenen Formatlar

TürFormatlarMaks. Boyut
GörselJPG, PNG, GIF, WEBP30 MB
VideoMP4, MOV500 MB

Medya Kütüphanesini Listele

GET/v1/media

Kullanıcının medya kütüphanesini sayfalandırılmış olarak döner.

Query Parametreleri

ParametreTipVarsayılanAçıklama
pageinteger1Sayfa numarası
perPageinteger20Sayfa başına kayıt (maks: 100)
typestringIMAGE veya VIDEO
searchstringDosya adı veya açıklama araması
workspaceIdstringWorkspace filtresi

Kod Örnekleri

medya-listele.js
const params = new URLSearchParams({ page: '1', perPage: '20', type: 'IMAGE' }) const response = await fetch( `https://api.sosyalkopru.com/v1/media?${params}`, { headers: { 'Authorization': `Bearer ${process.env.SOSYALKOPRU_API_KEY}` } } ) const { data, pagination } = await response.json() console.log(`${pagination.total} medya dosyası`) data.forEach(m => console.log(`${m.id} ${m.type} ${m.filename}`))

Başarılı Yanıt

{ "success": true, "data": [ { "id": "media_01HZGK9P3QABC", "type": "IMAGE", "filename": "urun-gorseli.jpg", "url": "https://cdn.sosyalkopru.com/media/api-img/.../urun-gorseli.jpg", "size": 524288, "mimeType": "image/jpeg", "width": 1080, "height": 1080, "altText": null, "description": null, "usageCount": 3, "createdAt": "2025-06-10T12:00:00.000Z" } ], "meta": { "requestId": "req_01XYZ", "timestamp": "...", "version": "1" }, "pagination": { "page": 1, "perPage": 20, "total": 48, "totalPages": 3, "hasNextPage": true, "hasPrevPage": false } }

Medya Yükle

POST/v1/media/upload

multipart/form-data formatında dosya yükler ve CDN URL’i döner.

İstek

Form AlanıTipZorunluAçıklama
filebinaryEvetYüklenecek dosya
altTextstringHayırErişilebilirlik metni (maks. 255 karakter)
descriptionstringHayırMedya açıklaması (maks. 1000 karakter)

Content-Type: multipart/form-data başlığını manuel olarak set etmeyin. Fetch/axios/requests kütüphaneleri bunu otomatik olarak doğru boundary ile ayarlar.

Kod Örnekleri

medya-yukle.js
import { readFileSync } from 'fs' import { basename } from 'path' async function medyaYukle(dosyaYolu, altText = '') { const form = new FormData() form.append('file', new Blob([readFileSync(dosyaYolu)]), basename(dosyaYolu)) if (altText) form.append('altText', altText) const response = await fetch('https://api.sosyalkopru.com/v1/media/upload', { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.SOSYALKOPRU_API_KEY}` }, body: form, }) if (!response.ok) { const { error } = await response.json() throw new Error(`${error.code}: ${error.message}`) } const { data } = await response.json() console.log('Yüklendi:', data.mediaId) console.log('URL:', data.url) return data } const medya = await medyaYukle('./urun-gorseli.jpg', 'Ürün fotoğrafı')

Başarılı Yanıt (201 Created)

{ "success": true, "data": { "mediaId": "media_01HZGK9P3QABC", "url": "https://cdn.sosyalkopru.com/media/api-img/ws123/usr456/urun-gorseli.jpg", "type": "IMAGE", "size": 524288, "mimeType": "image/jpeg", "filename": "urun-gorseli.jpg", "altText": "Ürün fotoğrafı", "description": null }, "meta": { "requestId": "req_01XYZ", "timestamp": "...", "version": "1" } }

Gönderi Oluşturmada Kullanım

Yükleme sonrası dönen mediaId ile gönderi oluşturun:

const medya = await medyaYukle('./urun.jpg') await fetch('https://api.sosyalkopru.com/v1/posts', { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.SOSYALKOPRU_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ platforms: ['instagram'], content: { text: 'Yeni ürün! 🎉', media: [{ mediaId: medya.mediaId, order: 0 }], }, accountIds: ['acc_01HZGK9P3QXYZ'], }), })

Medya Bilgisi

GET/v1/media/{id}

Yüklenmiş bir medya dosyasının metadata bilgilerini döner.

Path Parametresi

ParametreAçıklama
idMedya ID’si (media_...)

Kod Örnekleri

medya-bilgi.js
const response = await fetch( `https://api.sosyalkopru.com/v1/media/${mediaId}`, { headers: { 'Authorization': `Bearer ${process.env.SOSYALKOPRU_API_KEY}` } } ) const { data } = await response.json() console.log(`${data.type}: ${data.url}`) console.log(`Boyut: ${(data.size / 1024 / 1024).toFixed(1)} MB`) console.log(`Kullanım sayısı: ${data.usageCount} gönderide`)

Başarılı Yanıt

{ "success": true, "data": { "id": "media_01HZGK9P3QABC", "url": "https://cdn.sosyalkopru.com/media/api-img/.../urun.jpg", "type": "IMAGE", "size": 524288, "mimeType": "image/jpeg", "filename": "urun.jpg", "altText": "Ürün fotoğrafı", "description": null, "width": 1080, "height": 1080, "duration": null, "usageCount": 3, "createdAt": "2025-06-10T12:00:00.000Z" }, "meta": { "requestId": "req_01XYZ", "timestamp": "...", "version": "1" } }

Medya Sil

DELETE/v1/media/{id}

Dosyayı CDN ve veritabanından kalıcı olarak siler.

Aktif gönderilerde kullanılan medya dosyaları silinemez (409 Conflict). Önce ilgili gönderileri iptal edin veya silin.

Kod Örnekleri

medya-sil.js
const response = await fetch( `https://api.sosyalkopru.com/v1/media/${mediaId}`, { method: 'DELETE', headers: { 'Authorization': `Bearer ${process.env.SOSYALKOPRU_API_KEY}` }, } ) if (response.status === 409) { console.error('Bu medya aktif gönderilerde kullanılıyor, önce gönderileri silin.') process.exit(1) } const { data } = await response.json() console.log('Silindi:', data.id)

Başarılı Yanıt

{ "success": true, "data": { "id": "media_01HZGK9P3QABC", "deleted": true }, "meta": { "requestId": "req_01XYZ", "timestamp": "...", "version": "1" } }
Last updated on