imgpile API

Görselleri ve videoları programatik olarak yükleyin, paylaşın ve yönetin.

https://imgpile.com/api/v1 — tüm uç noktalar

https://cdn.imgpile.com/api/v1/media — yalnızca dosya yüklemeleri (şuna bakın aşağıda)

Bir API belirteci alın

Giriş yap veya kayıt ol bir API belirteci oluşturmak için.

Kavramlar

imgpile'ın iki temel nesnesi var. Farkı anlamak zaman kazandırır.

Medya

Tek bir dosya (görsel veya video). Doğrudan bir CDN URL'si var; hotlinking, yerleştirme veya paylaşım için ideal.

Gönderi

Bir veya daha fazla medya öğesi içeren, paylaşılabilir bir sayfa. Başlık, açıklama, oylama, yorumlar ve etiketler içerir.

Sadece doğrudan bir görsel URL'si mi gerekiyor? Şuraya yükle /media. Kullan urls.original yanıttan. Bitti.
Yorumlar ve oylama içeren paylaşılabilir bir gönderi mi istiyorsunuz? Önce medyayı yükleyin, sonra şunu çağırın /posts medya kimlikleriyle.

Hızlı Başlangıç

Tek bir dosya yükleyin ve doğrudan bir CDN URL'si alın. ShareX, Discord botları veya sadece bir görseli barındırması gereken herhangi bir betik için ideal.

Not: yüklemeler şuraya gider: cdn.imgpile.com, değil imgpile.com.

curl -X POST https://cdn.imgpile.com/api/v1/media \ -H "Authorization: Bearer YOUR_TOKEN" \ -F "[email protected]"

Yanıt:

{ "message": "Media created successfully", "media": { "slug": "abc1234", "type": "image/jpeg", "urls": { "original": "https://cdn.imgpile.com/f/abc1234.jpg", ... } } }

Birden fazla dosya yükleyin, ardından bunları meta veriler, oylama ve yorumlarla birlikte bir gönderi halinde gruplandırın.

1. Her dosyayı şuraya yükleyin: cdn.imgpile.com ve dönen medya ID'sini saklayın:

curl -X POST https://cdn.imgpile.com/api/v1/media \ -H "Authorization: Bearer YOUR_TOKEN" \ -F "[email protected]" # Returns: { "media": { "id": 12345, ... } }

2. Bu ID'lerle bir gönderi oluşturun:

curl -X POST https://imgpile.com/api/v1/posts \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"media_ids": [12345, 12346]}' # Returns: { "post": { "slug": "xyz789", ... } }

3. (İsteğe bağlı) Bir başlık ve açıklama ekleyin:

curl -X PATCH https://imgpile.com/api/v1/posts/xyz789 \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title": "My post", "description": "Summer 2026"}'

Gönderiniz artık şu adreste yayında: https://imgpile.com/p/xyz789

Bir tarayıcıdan veya Node.js ile görsel yükleyin:

const formData = new FormData(); formData.append('file', fileInput.files[0]); const response = await fetch('https://cdn.imgpile.com/api/v1/media', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_TOKEN', }, body: formData, }); const { media } = await response.json(); console.log(media.urls.original); // https://cdn.imgpile.com/f/abc1234.jpg

ShareX kurulumu

Özel Yükleyici (Custom Uploader) yapılandırmamızı indirin ve ShareX'e içe aktarın — manuel JSON düzenleme gerekmez.

imgpile.sxcu indir

  1. İndirmek için yukarıdaki düğmeye tıklayın imgpile.sxcu.
  2. Dosyaya çift tıklayın — ShareX içe aktaracak ve imgpile kullanılabilir bir yükleyici oluşturacak.
  3. Hedefler → Özel yükleyici ayarları → Başlıklar ve şunu değiştirin: YOUR_TOKEN_HERE API token'ınızla (bir tane şurada oluşturun: Giriş).
  4. Ayarla Hedefler → Görsel yükleyici → imgpile. Bir ekran görüntüsü alın — URL panonuza şu şekilde kopyalanır: https://cdn.imgpile.com/f/….

Kimlik Doğrulama

Okuma uçları (GET) şunlardır: genel ve kimlik doğrulama gerektirmez. Diğer tüm uç noktalar bir bearer token gerektirir.

curl https://imgpile.com/api/v1/posts

Kimlik doğrulamalı istekler için token'ınızı şu alana iletin: Authorization başlık:

curl -H "Authorization: Bearer YOUR_TOKEN" https://cdn.imgpile.com/api/v1/media -F "[email protected]"

Dosya yükleme hedefi cdn.imgpile.com; gör Medya → Yükle ayrıntılar için.

Token'ı şurada oluşturun: Giriş yukarıdaki bölümde.

Hatalar

API standart HTTP durum kodları döndürür. Hata yanıtları, neyin yanlış gittiğini açıklayan bir message (veya error) alan içeren bir JSON gövdesi içerir.

Durum kodları

KodAnlam
200OK — istek başarılı
201Created — kaynak oluşturuldu
400Bad Request — hatalı biçimlendirilmiş istek
401Unauthenticated — eksik veya geçersiz token
403Yasaklandı — bu işlem için iznin yok
404Bulunamadı — kaynak mevcut değil
422Validation failed — istek gövdesinde geçersiz alanlar var
429Rate Limited — çok fazla istek, yavaşlayın
451Unavailable for Legal Reasons — dosya yasaklı bir hash ile eşleşti
500Server Error — tarafımızda bir şeyler ters gitti

Örnek hata yanıtları

401 Unauthenticated

{ "message": "Unauthenticated." }

403 Forbidden

{ "message": "This action is unauthorized." }

422 Validation failed

{ "message": "The file field is required.", "errors": { "file": ["The file field is required."] } }

429 Rate limited

{ "message": "Too Many Attempts." }

Şunu kontrol edin Retry-After limit sıfırlanana kadar geçen saniyeler için yanıt başlığını.

451 Yasaklı içerik

{ "error": "This file is not allowed." }

API Sayfalama

Uç noktaları listele (GET /posts, GET /media) sayfalı sonuçlar döndürür. Varsayılan sayfa boyutu 10'dur; şununla birlikte en fazla 250 isteyebilirsiniz: ?limit=N.

Kullan ?page=N sayfalar arasında gezinmek için. Yanıt, sayfalama meta verilerini içerir:

{ "data": [ ... ], "links": { "first": "https://imgpile.com/api/v1/posts?page=1", "last": "https://imgpile.com/api/v1/posts?page=42", "prev": null, "next": "https://imgpile.com/api/v1/posts?page=2" }, "meta": { "current_page": 1, "from": 1, "to": 10, "per_page": 10, "total": 421, "last_page": 42 } }

Tekrarlarken şunu izleyin: links.next şuna kadar: null, veya şunu kontrol edin meta.current_page karşı meta.last_page.

İçerik Filtreleme

Varsayılan olarak, uç noktaları listele (GET /posts, GET /media) yalnızca güvenli içerik döndürür (moderasyon durumu approved). Yetişkin içeriği de dahil etmek için (nsfw), geç ?nsfw=1:

curl https://imgpile.com/api/v1/posts?nsfw=1

Yasaklı içerik (rejected, yani spam veya taciz) hiçbir zaman, şu ne olursa olsun, genel besleme uç noktalarına döndürülmez: ?nsfw bayrağı.

Her gönderi ve medya yanıtı bir moderation_status alanı içerir; böylece istemcinizde işaretlenen öğeleri uyarabilir, bulanıklaştırabilir veya gizleyebilirsiniz:

{ "moderation_status": "approved" | "pending" | "nsfw" | "rejected", ... }
  • approved — tüm kitleler için güvenlidir.
  • pending — otomatik moderasyon bekleniyor.
  • nsfw — yetişkin içerik; yalnızca genel uç noktalardan şu durumda döndürülür: ?nsfw=1.
  • rejected — spam/taciz; asla genel uç noktalara döndürülmez.

Gizli gönderiler slug'larıyla erişilebilir ama asla akışlarda görünmez. Özel gönderiler bir ?key=xxx sorgu parametresi (sahibi bunu gönderinin paylaşım bağlantısında bulabilir).

Hız Sınırları

  • Genel istekler (token yok): IP başına dakikada 30 istek
  • Kimlik doğrulanmış istekler: kullanıcı başına dakikada 120 istek
  • Dosya yüklemeleri: kullanıcı/IP başına günde 1.000 dosya
  • Maksimum dosya boyutu: 100 MB
  • Kabul edilen türler: image/* ve video/*

Oran sınırlama (rate limit) başlıkları her yanıtta bulunur (X-RateLimit-Limit, X-RateLimit-Remaining).

Media nesnesi

Medya uç noktaları tarafından döndürülür ve gönderi yanıtlarının içine gömülür.

AlanTürAçıklama
slugstringTekil 7 karakterlik tanımlayıcı. URL'lerde kullanılır.
filenamestringDepolama dosya adı (slug ile aynı).
titlestring|nullKullanıcı tarafından sağlanan başlık.
descriptionstring|nullKullanıcı tarafından sağlanan açıklama.
typestringMIME türü — örn. image/jpeg, video/mp4.
widthintegerPiksel cinsinden genişlik.
heightintegerPiksel cinsinden yükseklik.
moderation_statusenumŞunlardan biri: approved, pending, nsfw, veya rejected. Şuna bakın İçerik Filtreleme.
processedbooleanfalse boyut varyantları oluşturulurken; true hazır olduğunda.
created_attimestampISO 8601 zaman damgası.
urlsobjectmevcut her boyutta CDN URL'leri — şuraya bakın Doğrudan Görsel URL'leri.
userobject|nullYükleyen (kullanıcı adı, avatar). Misafir yüklemelerinde null.

Post nesnesi

Bir veya daha fazla medya öğesi için paylaşılabilir bir kapsayıcı.

AlanTürAçıklama
idintegerSayısal ID. Şunu kullanın slug URL'ler için.
slugstringTekil 7 karakterlik tanımlayıcı. URL'lerde kullanılır.
titlestring|nullGönderi başlığı.
descriptionstring|nullGönderi açıklaması.
scoreintegerNet oy skoru (artı oylar eksi eksi oylar).
view_countintegerToplam sayfa görüntüleme.
media_countintegerBu gönderideki medya öğesi sayısı.
moderation_statusenumŞunlardan biri: approved, pending, nsfw, veya rejected. Şuna bakın İçerik Filtreleme.
isUpvotedByUserbooleanKimliği doğrulanmış kullanıcının bu gönderiye artı oy verip vermediği.
isDownvotedByUserbooleanKimliği doğrulanmış kullanıcının bu gönderiye eksi oy verip vermediği.
created_attimestampISO 8601 zaman damgası.
userobject|nullYazar (kullanıcı adı, avatar). Misafir gönderilerinde null.
mediaarrayŞunun dizisi: Medya nesneleri. Yalnızca tek-gönderi isteklerinde dahil edilir.
first_mediaobject|nullİlk medya (önizleme). Yalnızca akış yanıtlarında dahil edilir.
Sadece sahibi için alanlar (yalnızca gönderi sahibine döner):
visibilityenumpublic, hidden, veya private.
access_keystring|nullÖzel bir gönderiyi görüntülemek için gerekli. Şöyle ekleyin ?key=xxx.

Media uç noktaları

Tekil dosyalar (resimler veya videolar). Her medya öğesinin, istediğiniz yerde hotlink veya embed edebileceğiniz doğrudan bir CDN URL'si vardır.

POST /media Kimlik doğrulama gerekli
Yükleme sunucusu

Yüklemeleri şuraya gönder https://cdn.imgpile.com/api/v1/mediadeğil imgpile.com. Dosyalar özel bir origin'de saklanır; ana host'a POST atmak başarısız olur.

Diğer tüm uç noktalar şunu kullanır imgpile.com/api/v1 her zamanki gibi.

Bir resim veya video yükleyin. Şöyle gönderin multipart/form-data.

ParametreAçıklama
filegerekli Yüklenecek dosya. En fazla 100 MB. image/* ve video/* kabul eder.
post_idopsiyonel Mevcut bir gönderiye ekle.
İstek
curl -X POST https://cdn.imgpile.com/api/v1/media \ -H "Authorization: Bearer YOUR_TOKEN" \ -F "[email protected]"
Yanıt 201
{ "message": "Media created successfully", "media": { "slug": "abc1234", "filename": "abc1234", "type": "image/jpeg", "width": 1920, "height": 1080, "moderation_status": "approved", "urls": { "original": "https://cdn.imgpile.com/f/abc1234.jpg", ... } } }
GET /media Herkese açık

Filtreleme ve sayfalama ile medya öğelerini listeleyin.

ParametreAçıklama
tagEtiket adına göre filtrele
sortlatest (varsayılan) veya random
periodday, week, month, year, all
limitSayfa başına sonuç (maks 250, varsayılan 10)
usernameKullanıcı adına göre filtrele
nsfwŞuna ayarla 1 NSFW içeriği dahil etmek için. Varsayılan: Yalnızca SFW.
İstek
curl https://imgpile.com/api/v1/media?limit=20
Yanıt 200
{ "data": [ { "slug": "abc1234", "type": "image/jpeg", "width": 1920, "height": 1080, "moderation_status": "approved", "urls": { ... } }, ... ], "links": { ... }, "meta": { "current_page": 1, "total": 421 } }
GET /media/{slug} Herkese açık

Slug'ına göre tek bir medya öğesi alın.

İstek
curl https://imgpile.com/api/v1/media/abc1234
Yanıt 200
{ "data": { "slug": "abc1234", "type": "image/jpeg", "width": 1920, "height": 1080, "moderation_status": "approved", "urls": { ... } } }
PATCH /media/{slug} Kimlik doğrulama gerekli

Sahip olduğunuz medyayı güncelleyin.

ParametreAçıklama
titleMedya başlığı
descriptionMedya açıklaması
İstek
curl -X PATCH https://imgpile.com/api/v1/media/abc1234 \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title": "New title"}'
Yanıt 200
{ "message": "Media updated successfully" }
DELETE /media/{slug} Kimlik doğrulama gerekli

Sahip olduğunuz medyayı silin.

İstek
curl -X DELETE https://imgpile.com/api/v1/media/abc1234 \ -H "Authorization: Bearer YOUR_TOKEN"
Yanıt 200
{ "message": "Media deleted successfully." }

Post uç noktaları

Bir veya daha fazla medya öğesi içeren paylaşılabilir sayfalar. Bir başlık, açıklama, oylama, yorumlar ve etiketler içerir.

GET /posts Herkese açık

Filtreleme ve sayfalama ile herkese açık gönderileri listeleyin.

ParametreAçıklama
tagEtiket adına göre filtrele
sortlatest (varsayılan) veya random
periodday, week, month, year, all
limitSayfa başına sonuç (maks 250, varsayılan 10)
usernameKullanıcı adına göre filtrele
nsfwŞuna ayarla 1 NSFW içeriği dahil etmek için. Varsayılan: Yalnızca SFW.
İstek
curl https://imgpile.com/api/v1/posts?sort=latest
Yanıt 200
{ "data": [ { "id": 30713, "slug": "MSGhYqy", "title": "Sunset photos", "score": 12, "view_count": 245, "media_count": 3, "moderation_status": "approved", "user": { "username": "alice", ... }, "first_media": { ... } }, ... ] }
GET /posts/{slug} Herkese açık

Sayfalı medya ile tek bir gönderi al.

ParametreAçıklama
mediaPageMedya için sayfa numarası (varsayılan 1)
perPageSayfa başına medya öğesi (varsayılan 10)
keyÖzel gönderiler için gerekli. Sahibi bunu paylaşım bağlantısında bulabilir.
İstek
curl https://imgpile.com/api/v1/posts/MSGhYqy # Private post with key: curl "https://imgpile.com/api/v1/posts/xyz789?key=ab12cd34ef"
Yanıt 200
{ "data": { "id": 30713, "slug": "MSGhYqy", "title": "Sunset photos", "description": "...", "score": 12, "view_count": 245, "moderation_status": "approved", "user": { "username": "alice", ... }, "media": [ ... ] } }
POST /posts Kimlik doğrulama gerekli

Yüklenen medyadan yeni bir gönderi oluştur.

ParametreAçıklama
media_idsgerekli Gönderiye eklenecek medya ID'lerinin dizisi
İstek
curl -X POST https://imgpile.com/api/v1/posts \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"media_ids": [12345, 12346]}'
Yanıt 201
{ "message": "Post created successfully", "post": { "id": 30720, "slug": "rtWJdHr" } }
PATCH /posts/{slug} Kimlik doğrulama gerekli

Sahip olduğun bir gönderiyi güncelle.

ParametreAçıklama
titleGönderi başlığı (en fazla 255)
descriptionGönderi açıklaması
visibilitypublic, hidden, veya private. Şu ayara private şunu otomatik olarak oluşturur: access_key.
is_nsfwBoole. Gönderiyi yetişkin içerik olarak işaretle; böylece izleyicinin NSFW anahtarı arkasında kalsın. Ayarlandıktan sonra gönderi, aşağıda otomatik olarak çözülmez: nsfw.
media_orderİstenen sırada medya slug'larının dizisi
İstek
curl -X PATCH https://imgpile.com/api/v1/posts/rtWJdHr \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title": "Updated title", "visibility": "private"}'
Yanıt 200
{ "message": "Post updated successfully", "visibility": "private", "access_key": "ab12cd34ef" }
DELETE /posts/{slug} Kimlik doğrulama gerekli

Sahip olduğun bir gönderiyi sil.

İstek
curl -X DELETE https://imgpile.com/api/v1/posts/rtWJdHr \ -H "Authorization: Bearer YOUR_TOKEN"
Yanıt 200
{ "message": "Post deleted successfully" }

Yorumlar

POST /posts/{post}/comments Kimlik doğrulama gerekli

Bir gönderiye yorum ekle.

ParametreAçıklama
contentgerekli Yorum metni (en fazla 500 karakter)
parent_idopsiyonel Yanıt verilecek yorumun ID'si (zincir yorumlar için)
İstek
curl -X POST https://imgpile.com/api/v1/posts/MSGhYqy/comments \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content": "Nice shot!"}'
Yanıt 201
{ "success": true, "comment": { "id": 456, "content": "Nice shot!", "user_id": 1, "post_id": 12345 } }
DELETE /comments/{comment} Kimlik doğrulama gerekli

Sahip olduğun bir yorumu sil.

İstek
curl -X DELETE https://imgpile.com/api/v1/comments/123 \ -H "Authorization: Bearer YOUR_TOKEN"
Yanıt 200
{ "success": true, "message": "Comment deleted successfully" }

Kullanıcılar

GET /users/{username}/posts Herkese açık

Bir kullanıcının gönderilerini al.

İstek
curl https://imgpile.com/api/v1/users/alice/posts
Yanıt 200
{ "data": [ { "id": 30713, "slug": "MSGhYqy", "title": "Sunset photos", "score": 12, "moderation_status": "approved", "first_media": { ... } }, ... ] }
GET /users/{username}/media Herkese açık

Bir kullanıcının medyasını al.

İstek
curl https://imgpile.com/api/v1/users/alice/media
Yanıt 200
{ "data": [ { "slug": "abc1234", "type": "image/jpeg", "moderation_status": "approved", "urls": { ... } }, ... ] }
GET /users/{username}/comments Herkese açık

Bir kullanıcının yorumlarını al (sayfalı).

İstek
curl https://imgpile.com/api/v1/users/alice/comments
GET /users/{username}/followers Herkese açık

Bir kullanıcının takipçilerini al (sayfalı).

İstek
curl https://imgpile.com/api/v1/users/alice/followers
GET /users/{username}/following Herkese açık

Bu kullanıcının takip ettikleri kullanıcıları al (sayfalı).

İstek
curl https://imgpile.com/api/v1/users/alice/following
POST /users/{username}/follow Kimlik doğrulama gerekli

Bir kullanıcıyı takip et.

İstek
curl -X POST https://imgpile.com/api/v1/users/alice/follow \ -H "Authorization: Bearer YOUR_TOKEN"
Yanıt 200
{ "message": "User followed." }
DELETE /users/{username}/follow Kimlik doğrulama gerekli

Bir kullanıcıyı takipten çıkar.

İstek
curl -X DELETE https://imgpile.com/api/v1/users/alice/follow \ -H "Authorization: Bearer YOUR_TOKEN"
Yanıt 200
{ "message": "User unfollowed." }

Oylama

POST /posts/{post}/upvote Kimlik doğrulama gerekli

Bir gönderiyi beğen (oy ver). Tekrar çağırmak beğeniyi kaldırır.

İstek
curl -X POST https://imgpile.com/api/v1/posts/123/upvote \ -H "Authorization: Bearer YOUR_TOKEN"
Yanıt 200
{ "message": "Post upvoted successfully", "score": 13 }
POST /posts/{post}/downvote Kimlik doğrulama gerekli

Bir gönderiyi beğenme (eksi oy ver). Tekrar çağırmak eksi oyu kaldırır.

İstek
curl -X POST https://imgpile.com/api/v1/posts/123/downvote \ -H "Authorization: Bearer YOUR_TOKEN"
Yanıt 200
{ "message": "Post downvoted successfully", "score": 11 }
POST /comments/{comment}/upvote Kimlik doğrulama gerekli

Bir yorumu beğen (oy ver). Tekrar çağırmak beğeniyi kaldırır.

İstek
curl -X POST https://imgpile.com/api/v1/comments/456/upvote \ -H "Authorization: Bearer YOUR_TOKEN"
POST /comments/{comment}/downvote Kimlik doğrulama gerekli

Bir yorumu beğenme (eksi oy ver). Tekrar çağırmak eksi oyu kaldırır.

İstek
curl -X POST https://imgpile.com/api/v1/comments/456/downvote \ -H "Authorization: Bearer YOUR_TOKEN"

Doğrudan Görsel URL'leri

Yüklenen her dosya CDN üzerinden sunulur. Medya yanıtı şunları içerir: urls tüm mevcut boyutlarla birlikte bir

https://cdn.imgpile.com/f/{filename}.{ext} — Original https://cdn.imgpile.com/f/{filename}_xs.{ext} — Extra small https://cdn.imgpile.com/f/{filename}_sm.{ext} — Small https://cdn.imgpile.com/f/{filename}_md.{ext} — Medium https://cdn.imgpile.com/f/{filename}_lg.{ext} — Large https://cdn.imgpile.com/f/{filename}_xl.{ext} — Extra large https://cdn.imgpile.com/f/{filename}_thumb.jpg — Thumbnail (videos)
storage.to Ücretsiz dosya paylaşımı
25GB dosya Kayıt yok Sınırsız hız
Ücretsiz dene