Hızlı başlangıç
API anahtarından planlanmış gönderiye, tek oturuşta.
Afilipost önce API olarak yazıldı: panelin yaptığı her şeyin çağırabileceğin bir ucu var. Bu sayfa seni API anahtarından planlanmış bir gönderiye götürür.
Kimlik doğrulama
Her istek anahtarını bearer olarak taşır. Anahtarlar panelden (Anahtarlar ekranı) üretilir ve bir kez gösterilir — biz yalnızca SHA-256 özetini tutarız; veritabanı sızsa bile anahtarlar sızmaz.
Authorization: Bearer yay_·············
Content-Type: application/json Temel adres: https://api.afilipost.com — aynı yollar /api öneksiz de cevap verir; Zernio biçiminde yazılmış bir istemci değişmeden çalışır.
Yayınlanmış gönderiye en kısa yol
- /v1/media/presign ile yükleme adresi al ve dosyayı oraya PUT et — baytlar doğrudan depoya gider, API'ye uğramaz.
- /v1/posts ile gönderiyi oluştur; mediaItems, verilen publicUrl'i göstersin. Bir gönderi birden çok hesabı hedefleyebilir.
- Bir webhook kaydet ve çıktığı an post.published al — ya da platformPostId belirene kadar /v1/posts/{id} adresini yokla.
- Yorum → DM kuralını /v1/comment-automations ile bağla.
Python ile hızlı başlangıç
Yayın yolunun tamamı, yalnızca standart kütüphane — kurulacak SDK yok:
import json, urllib.request
BASE = "https://api.afilipost.com/api"
KEY = "yay_………"
def call(path, payload=None, method="GET"):
data = json.dumps(payload).encode() if payload else None
req = urllib.request.Request(BASE + path, data=data, method=method,
headers={"Authorization": f"Bearer {KEY}",
**({"Content-Type": "application/json"} if data else {})})
with urllib.request.urlopen(req, timeout=60) as r:
return json.loads(r.read() or "{}")
# 1) yükleme adresi al, dosyayı DOĞRUDAN depoya gönder
grant = call("/v1/media/presign",
{"filename": "reel.mp4", "contentType": "video/mp4"}, "POST")
with open("reel.mp4", "rb") as f:
put = urllib.request.Request(grant["uploadUrl"], data=f.read(),
method="PUT", headers={"Content-Type": "video/mp4"})
urllib.request.urlopen(put, timeout=600)
# 2) gönderiyi planla
account = call("/v1/accounts?platform=instagram")["accounts"][0]
post = call("/v1/posts", {
"content": "Bugünün reposu 🚀",
"mediaItems": [{"type": "video", "url": grant["publicUrl"],
"filename": "reel.mp4", "mimeType": "video/mp4"}],
"platforms": [{"platform": "instagram", "accountId": account["_id"],
"platformSpecificData": {"firstComment": "Link için REPO yaz"}}],
"scheduledFor": "2026-08-25T19:40:00.000Z",
"idempotencyKey": "ilk-deneme-1",
}, "POST")
print(post["post"]["_id"], post["post"]["status"]) Temel kavramlar
- Gönderi ve hedefler. İçeriği gönderi taşır; gittiği her hesap kendi durumu olan bir hedeftir. Instagram teslim edilirken YouTube kotaya takılabilir ve API hangisinin ne olduğunu söyler.
- Idempotency. /v1/posts'a idempotencyKey gönder; tekrarlanan istek kopya açmak yerine mevcut gönderiyi döndürür.
- Şifre yok, hiçbir zaman. Hesaplar her platformun kendi OAuth ekranından bağlanır; API yalnızca jeton görür ve jetonlar şifreli durur.