Kreatif Stüdyo API
Kreatif Stüdyo modülünün tüm işlemleri (26) ve veri modelleri (5): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Anlat, gör, kullan — yapay zekâyla ürün fotoğrafları, gönderiler, hikâye videoları, seslendirme ve müzik.
Modül kodu creative · 26 işlem · 5 veri modeli · 8 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: creative (hepsi), creative:read (yalnız okuma) ya da creative:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
creative_ads | creative_ad | /api/v1/creative_ads | |||
creative_brand_kits | creative_brand_kit | /api/v1/creative_brand_kits | |||
creative_generations | creative_generation | /api/v1/creative_generations | |||
creative_posts | creative_post | /api/v1/creative_posts | |||
creative_voices | creative_voice | /api/v1/creative_voices |
Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.
İşlemler
| İşlem | Gereken izin | Ne yapar |
|---|---|---|
creative.cancel | creative:write | Üretimi iptal et |
creative.cancel_post | creative:write | Planlı gönderiyi iptal et |
creative.clone_voice | creative:write | Ses klonla |
creative.complete_generation | creative:handle | Üretimi bitir |
creative.compose | creative:write | Resme yazı koy ya da fotoğraf videosu yap |
creative.edit_again | creative:write | Videoyu yeniden düzenle |
creative.fail_generation | creative:handle | Üretimi başarısız işaretle |
creative.finish_voice | creative:handle | Ses klonlamayı bitir |
creative.generate | creative:write | Görsel, video, seslendirme ya da müzik üret |
creative.generate_batch | creative:write | Toplu hazırla |
creative.generate_set | creative:write | Ürün fotoğraf stüdyosu: set hazırla |
creative.mark_post | creative:handle | Gönderinin durumunu kaydet |
creative.note_provider_job | creative:handle | Sağlayıcı işini kaydet |
creative.park_generation | creative:handle | Sahibinin bilgisayarını bekle |
creative.record_use | creative:write | Nerede kullanıldığını kaydet |
creative.remove | creative:delete | Geçmişten kaldır |
creative.remove_ad | creative:delete | Reklam kütüphanesinden kaldır |
creative.remove_voice | creative:delete | Sesi kaldır |
creative.resume_provider | creative:write | Sağlayıcı sonucunu yeniden kontrol et |
creative.save_ad | creative:write | Reklamı kütüphaneye kaydet |
creative.save_brand_kit | creative:write | Marka kitini kaydet |
creative.save_caption | creative:write | Gönderi metnini kaydet |
creative.schedule_post | creative:write | Sosyal medyada paylaş |
creative.set_favourite | creative:write | Favori |
creative.start_generation | creative:handle | Üretimi başlat |
creative.vary | creative:write | Buna benzer |
creative.cancel
Üretimi iptal et — Başlamamış bir üretimi durdurur.
Gereken izin creative:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/creative_generations/{id}/actions/cancel- Asıl adres:
POST /api/v1/actions/creative.cancel
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_queued | Yalnızca başlamamış bir üretim iptal edilebilir. |
Neye yazar: creative_generation (update) — queued → cancelled
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/cancel \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.cancel("CREATIVE_GENERATION_ID")era creative_generations cancel CREATIVE_GENERATION_ID{
"name": "era__creative__cancel",
"arguments": {
"id": "CREATIVE_GENERATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_queued · 429 çok sık istek
creative.cancel_post
Planlı gönderiyi iptal et — Henüz çıkmamış bir gönderiyi durdurur.
Gereken izin creative:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/creative_posts/{id}/actions/cancel_post- Asıl adres:
POST /api/v1/actions/creative.cancel_post
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Yazı · kimliği: creative_post |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_scheduled | Yalnızca zamanlanmış bir gönderi iptal edilebilir. |
Neye yazar: creative_post (update) — scheduled → cancelled
curl -X POST https://app.getera.io/api/v1/creative_posts/CREATIVE_POST_ID/actions/cancel_post \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativePosts.cancelPost("CREATIVE_POST_ID")era creative_posts cancel_post CREATIVE_POST_ID{
"name": "era__creative__cancel_post",
"arguments": {
"id": "CREATIVE_POST_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_scheduled · 429 çok sık istek
creative.clone_voice
Ses klonla — Kendi kayıtlarından seslendirme ve dudak senkronu için bir ses yapar. Yalnızca konuşanın izniyle.
Gereken izin creative:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/creative_voices/actions/clone_voice- Asıl adres:
POST /api/v1/actions/creative.clone_voice
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | evet | Ses adı · en çok 80 |
sampleFileIds | object / array | evet | Kayıtlar · Sesin kayıtlarının dosya kimlikleri. |
consent | boolean | evet | Konuşan kişinin onayı bende var |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
empty_name | Sesin bir adı olmalı. |
consent_required | Ses ancak konuşan kişinin izin verdiği onaylandıktan sonra kopyalanabilir. |
needs_samples | Sesin en az bir kaydı gerekir. |
Yayımladığı olaylar: creative.voice_requested
Neye yazar: creative_voice (insert) — A pending voice, made by the studio right after
curl -X POST https://app.getera.io/api/v1/creative_voices/actions/clone_voice \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Voice name","sampleFileIds":{},"consent":true}'{
"ok": true,
"result": "…",
"events": [
"creative.voice_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeVoices.cloneVoice({
name: "Voice name",
sampleFileIds: {},
consent: true
})era creative_voices clone_voice --data '{"name":"Voice name","sampleFileIds":{},"consent":true}'{
"name": "era__creative__clone_voice",
"arguments": {
"name": "Voice name",
"sampleFileIds": {},
"consent": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 empty_name, consent_required, needs_samples · 429 çok sık istek
creative.complete_generation
Üretimi bitir — Sonuçları (dosyalar) ve gerçek maliyeti kaydeder. Yalnızca makine.
Gereken izin creative:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/creative_generations/{id}/actions/complete_generation- Asıl adres:
POST /api/v1/actions/creative.complete_generation
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
outputs | object / array | evet | Sonuçlar |
usedModel | string | Model · en çok 160 | |
provider | string | Sağlayıcı · en çok 40 | |
sourceKind | string | Ödeyen · en çok 20 | |
costUsd | number | Maliyet (USD) · en az 0 | |
connection | object / array | Bağlantı kimin | |
check | object / array | Öz denetim |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_running | Yalnızca süren bir üretim bitebilir. |
no_outputs | Tamamlanan bir üretimin en az bir sonucu olmalı. |
Yayımladığı olaylar: creative.generated
Neye yazar: creative_generation (update) — running → succeeded, with results and cost
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_running, no_outputs · 429 çok sık istek
creative.compose
Resme yazı koy ya da fotoğraf videosu yap — Era kendisi hazırlar — yapay zekâ modeli yok, ücret yok. Bir düzen, gerçek ve doğru yazılmış metni markanın renkleri, yazı tipi ve logosuyla resmin üstüne yerleştirir (kampanya, yeni ürün, fiyat etiketi, duyuru, hikâye çağrısı, menü kartı, pazaryeri bandı, alıntı). Fotoğraf videosu 2–10 fotoğrafı yumuşak hareket, açılış cümlesi, müzik ve kapanış kartıyla dikey bir videoya çevirir.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/compose- Asıl adres:
POST /api/v1/actions/creative.compose
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
kind | string (enum) | evet | Ne · İzin verilen değerler: layout, photo_reel, image_grade |
grade | object / array | Renk ayarları · { exposure:-5..5, contrast:-100..100, saturation:-100..100, hue:-180..180, temperature:-100..100, splitTone:0..1, soften:0..20, vignette:0..1, grain:0..1 }. Local, no model. | |
fileIds | object / array | evet | Görseller · Dosya kimlikleri: düzen için bir tane, reel için 2–10 tane. |
layout | object / array | Düzen · { code, headline, subline, badge, price, oldPrice, cta, logo } | |
channel | string | Kanal · en çok 40 | |
reel | object / array | Reel · { hook, cta, music: upbeat|calm|cafe|none, voiceGenerationId, perPhotoSec, endCard, captions[] } | |
productId | uuid | Ürün | |
sourceGenerationId | uuid | Doldurulduğu yer: adresteki {id} · Kaynağı · kimliği: creative_generation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_layout | Düzen, Kreatif Stüdyo’nun sunduğu düzenlerden biri olmalı. |
needs_image | Bir düzen tam olarak bir görselin üstüne konur. |
empty_text | Bir düzende başlık, fiyat ya da rozet bulunur. |
needs_photos | Fotoğraf videosu için en az iki fotoğraf gerekir. |
unknown_track | Müzik Era’nın fon müziklerinden biri olmalı ya da hiç olmamalı. |
not_found | Video için seçilen seslendirme burada bulunmalı. |
Yayımladığı olaylar: creative.requested
Neye yazar: creative_generation (insert) — Queues the layout or reel; Era makes it without a model
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/compose \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"kind":"layout","fileIds":{}}'{
"ok": true,
"result": "…",
"events": [
"creative.requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.compose("CREATIVE_GENERATION_ID", {
kind: "layout",
fileIds: {}
})era creative_generations compose CREATIVE_GENERATION_ID --data '{"kind":"layout","fileIds":{}}'{
"name": "era__creative__compose",
"arguments": {
"sourceGenerationId": "CREATIVE_GENERATION_ID",
"kind": "layout",
"fileIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_layout, needs_image, empty_text, needs_photos, unknown_track, not_found · 429 çok sık istek
creative.edit_again
Videoyu yeniden düzenle — Bitmiş bir yapay zekâ video kurgusunun bir notla (“girişi kısalt, müzik olmasın”) yeni sürümünü yapar; önceki sürümler kalır.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/edit_again- Asıl adres:
POST /api/v1/actions/creative.edit_again
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Video düzenleme · kimliği: creative_generation |
note | string | evet | Ne değişmeli · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
empty_note | Notta neyin değişeceği yazmalı. |
not_editable | Yalnızca tamamlanmış (klipleriyle birlikte) bir yapay zekâ video düzenlemesi yeniden düzenlenebilir. |
Yayımladığı olaylar: creative.requested
Neye yazar: creative_generation (insert) — A queued video edit: the next version, pointing at the one it changes
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/edit_again \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"note":"What should change"}'{
"ok": true,
"result": "…",
"events": [
"creative.requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.editAgain("CREATIVE_GENERATION_ID", {
note: "What should change"
})era creative_generations edit_again CREATIVE_GENERATION_ID \
--note "What should change"{
"name": "era__creative__edit_again",
"arguments": {
"id": "CREATIVE_GENERATION_ID",
"note": "What should change"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 empty_note, not_editable · 429 çok sık istek
creative.fail_generation
Üretimi başarısız işaretle — Neden başarısız olduğunu kaydeder. Yalnızca makine.
Gereken izin creative:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/creative_generations/{id}/actions/fail_generation- Asıl adres:
POST /api/v1/actions/creative.fail_generation
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
error | string | Neden · en çok 600 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_open | Yalnızca sırada bekleyen ya da süren bir üretim başarısız olabilir. |
Yayımladığı olaylar: creative.failed
Neye yazar: creative_generation (update) — → failed
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_open · 429 çok sık istek
creative.finish_voice
Ses klonlamayı bitir — Sağlayıcının sesini ya da neden başarısız olduğunu kaydeder. Yalnızca makine.
Gereken izin creative:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/creative_voices/{id}/actions/finish_voice- Asıl adres:
POST /api/v1/actions/creative.finish_voice
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Ses · kimliği: creative_voice |
externalVoiceId | string | Sağlayıcı ses kimliği · en çok 120 | |
sourceKind | string (enum) | Hesap · İzin verilen değerler: byok | |
connectionId | uuid | Bağlantı | |
error | string | Neden başarısız oldu · en çok 600 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_pending | Yalnızca klonlanmakta olan bir ses bitebilir. |
Neye yazar: creative_voice (update) — pending → ready / failed
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_pending · 429 çok sık istek
creative.generate
Görsel, video, seslendirme ya da müzik üret — Anlat (ya da beyaz zeminde ürün, Instagram gönderisi, hikâye videosu, menü fotoğrafı gibi bir hazır seçenek seç); arka planda üretilir, Kreatif Stüdyo’ya ve Dosyalar’a düşer. Maliyet önce gösterilir; kendi aboneliğin ya da anahtarınla çalışır.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/generate- Asıl adres:
POST /api/v1/actions/creative.generate
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
higgsfield | object / array | Stüdyo aracı girdileri · Open-Higgsfield: {id, values, files}. id bir araç kataloğu kimliği, values model seçenekleri; files, türlü medya alanı adlarını Dosyalar kimlikleriyle eşler. MuAPI anahtarın gerekir. Araçları media_make işleminin catalogue seçeneğiyle bulabilirsin. | |
prompt | string | Ne yapılsın · en çok 4000 | |
studio | string (enum) | Stüdyo · Yapıldığı Kreatif Stüdyo bölümü (image, video, cinema, character, lipsync, motion, recast, clip, layers, audio, marketing, product); geçmişi orada görünür. · İzin verilen değerler: image, video, cinema, character, lipsync, motion, recast, clip, layers, audio, marketing, product | |
kind | string (enum) | Tür · İzin verilen değerler: image, video, tts, audio | |
preset | string | Hazır ayar · Bir kişi için: dance_trend, portrait_avatar, photo_edit, reel, cartoon_me, celebration_card, song_bed. Bir işletme için: product_white, product_lifestyle, instagram_post, story_video, product_video, menu_photo, poster, website_banner, voiceover, jingle. Fotoğraftan başlayan şablonlar inputFileIds ister. · en çok 60 | |
model | string | Model · auto (bunu yapabilen en ucuzu) ya da bir katalog model kimliği · en çok 160 | |
aspect | string (enum) | Biçim · İzin verilen değerler: 1:1, 4:5, 9:16, 16:9, 3:2, 2:3 | |
durationSec | number | Süre (saniye) · en az 1 · en çok 30 | |
count | number | Kaç tane · en az 1 · en çok 4 | |
voice | string | Ses · en çok 80 | |
inputFileIds | object / array | Başlangıç fotoğrafları · Başlanacak fotoğrafların dosya kimlikleri (canlandırma veya düzenleme için). | |
inputVideoIds | object / array | Senin klibin · Hareket aktarımı için kendi 4–30 sn’lik klibinin dosya kimliği. | |
resolution | string (enum) | Çözünürlük · İzin verilen değerler: 480p, 720p, 1080p | |
inputUrls | object / array | Webdeki başlangıç fotoğrafları · Başlanacak fotoğrafların https adresleri, ör. bir ürün sayfası görseli. | |
inputAudioIds | object / array | Ses · Dudak senkronu veya konuşan fotoğraf için ses dosyasının kimliği. | |
useBrand | boolean | Marka kitini kullan · Marka adını, renkleri ve üslubu ekler (varsayılan: marka kitinin kendi ayarı). | |
harness | string | Düzenleyen ajan · Yapay zekâ video düzenleyici: bilgisayarındaki kodlama ajanı (claude, codex). · en çok 40 | |
upscale | number | Büyüt · 2× veya 4×. · en az 2 · en çok 4 | |
voiceId | uuid | Klonlanmış ses · kimliği: creative_voice | |
editLast | boolean | Son resmi düzenle · Yeni bir resim çizmek yerine en son resmi (sohbette gönderilen ya da burada yapılan) değiştir: "buna X ekle", "bu şişeyi Fanta yap". Başlangıç fotoğrafları verildiğinde dikkate alınmaz. | |
channel | string | Kanal · Nerede kullanılacağı — instagram_post, instagram_story, reels, whatsapp_status, google_business, facebook_ad, trendyol, hepsiburada, amazon, website_hero … — biçimi belirler. · en çok 40 | |
productId | uuid | Ürün · Bunun yapıldığı mağaza ürünü. | |
sourceGenerationId | uuid | Doldurulduğu yer: adresteki {id} · Kaynağı · Bunun çeşitlediği ya da düzenlediği sonuç. · kimliği: creative_generation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
empty_prompt | Bir açıklama yazmanız ya da hazır bir ayar seçmeniz gerekir. |
unknown_preset | Hazır ayar Creative Studio’nun sunduklarından biri olmalı. |
needs_image | Bir fotoğrafı canlandıran hazır seçenek fotoğrafı ister; son görseli düzenlemek için de bir görsel gerekir. |
no_source | Kendi aboneliğiniz ya da anahtarınız bu türü üretebilmeli. |
budget_exceeded | Çalışma alanının yapay zekâ bütçesi doldu. |
voice_not_ready | Kopyalanan ses henüz hazır değil. |
Yayımladığı olaylar: creative.requested
Neye yazar: creative_generation (insert) — Queues the generation with its estimate
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/generate \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"higgsfield":{}}'{
"ok": true,
"result": "…",
"events": [
"creative.requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.generate("CREATIVE_GENERATION_ID", {
higgsfield: {}
})era creative_generations generate CREATIVE_GENERATION_ID --data '{"higgsfield":{}}'{
"name": "era__creative__generate",
"arguments": {
"sourceGenerationId": "CREATIVE_GENERATION_ID",
"higgsfield": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 empty_prompt, unknown_preset, needs_image, no_source, budget_exceeded, voice_not_ready · 429 çok sık istek
creative.generate_batch
Toplu hazırla — Tek şablonla birçok ürün, fotoğraf ya da satırı birden hazırlar (en fazla 20): "bu 12 ürünü beyaz zeminde", "menüdeki her yemek için bir hikâye". Her biri tek bir topluluk içinde ayrı bir üretimdir.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/actions/generate_batch- Asıl adres:
POST /api/v1/actions/creative.generate_batch
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
preset | string | Şablon · en çok 60 | |
prompt | string | Hepsi için · en çok 2000 | |
items | object / array | evet | Kalemler · { prompt?, inputFileIds?, productId?, label? } listesi — her biri bir resim. |
channel | string | Kanal · en çok 40 | |
model | string | Model · en çok 160 | |
aspect | string (enum) | Biçim · İzin verilen değerler: 1:1, 4:5, 9:16, 16:9, 3:2, 2:3 | |
useBrand | boolean | Marka kitini kullan | |
label | string | Ad · en çok 120 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
empty_batch | Bir toplu iş en az bir satır içerir. |
batch_too_big | Bir toplu iş en fazla 20 satır içerir. |
unknown_preset | Şablon, Kreatif Stüdyo’nun sunduğu şablonlardan biri olmalı. |
empty_prompt | Her satırda bir metin ya da şablon olmalı. |
needs_image | Fotoğrafla başlayan bir şablon her satırda fotoğrafı ister. |
no_source | Kendi aboneliğiniz ya da anahtarınız bunu üretebilmeli. |
budget_exceeded | Çalışma alanının yapay zekâ bütçesi doldu. |
Yayımladığı olaylar: creative.requested
Neye yazar: creative_generation (insert) — Queues one generation per line, sharing a batch
curl -X POST https://app.getera.io/api/v1/creative_generations/actions/generate_batch \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"items":{}}'{
"ok": true,
"result": "…",
"events": [
"creative.requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.generateBatch({
items: {}
})era creative_generations generate_batch --data '{"items":{}}'{
"name": "era__creative__generate_batch",
"arguments": {
"items": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 empty_batch, batch_too_big, unknown_preset, empty_prompt, needs_image, no_source, budget_exceeded · 429 çok sık istek
creative.generate_set
Ürün fotoğraf stüdyosu: set hazırla — Bir ürün fotoğrafından, ürün aynı kalacak şekilde ayrı ayrı çekimlerden oluşan bir set çıkar: sade (beyaz zemin), açılar (ön · üç çeyrek · yan · arka), yaşam tarzı (sektörüne uygun üç sahne) ya da ilan (beyaz zeminde ana · açı · detay · kullanımda, Trendyol veya Hepsiburada ölçüsünde).
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/actions/generate_set- Asıl adres:
POST /api/v1/actions/creative.generate_set
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
set | string | evet | Ayarla · clean (beyaz zeminde) · angles (önden, üç çeyrek, yandan, arkadan) · lifestyle (üç sahne) · listing (ana, açı, detay, kullanımda). · en çok 20 |
inputFileIds | object / array | Ürün fotoğrafı · Ürün fotoğrafının dosya kimlik(ler)i (1–2). | |
inputUrls | object / array | Webdeki ürün fotoğrafı · Bir ürün fotoğrafının https adresi. | |
productId | uuid | Ürün · Setin hazırlandığı mağaza ürünü. | |
product | string | Ürün adı · en çok 200 | |
note | string | Başka bir şey · en çok 600 | |
channel | string | Kanal · trendyol, hepsiburada, amazon, n11, instagram_post … (ilan seti varsayılan olarak trendyol). · en çok 40 | |
sector | string | Sektör · food, cafe, bakery, beauty, barber, fashion, jewellery, cosmetics, home, health, realestate, ecommerce — uyduğu sahneler. · en çok 40 | |
model | string | Model · en çok 160 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_set | Set, ürün stüdyosunun sunduğu setlerden biri olmalı. |
needs_image | Ürün stüdyosu ürünün bir fotoğrafıyla başlar. |
no_source | Kendi aboneliğiniz ya da anahtarınız bunu üretebilmeli. |
budget_exceeded | Çalışma alanının yapay zekâ bütçesi doldu. |
Yayımladığı olaylar: creative.requested
Neye yazar: creative_generation (insert) — Queues one generation per shot, sharing a batch
curl -X POST https://app.getera.io/api/v1/creative_generations/actions/generate_set \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"set":"Set"}'{
"ok": true,
"result": "…",
"events": [
"creative.requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.generateSet({
set: "Set"
})era creative_generations generate_set \
--set "Set"{
"name": "era__creative__generate_set",
"arguments": {
"set": "Set"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_set, needs_image, no_source, budget_exceeded · 429 çok sık istek
creative.mark_post
Gönderinin durumunu kaydet — planlandı → paylaşılıyor → paylaşıldı / başarısız. Yalnızca makine.
Gereken izin creative:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/creative_posts/{id}/actions/mark_post- Asıl adres:
POST /api/v1/actions/creative.mark_post
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Yazı · kimliği: creative_post |
status | string (enum) | evet | Durum · İzin verilen değerler: posting, posted, failed |
externalId | string | Platform kimliği · en çok 200 | |
externalUrl | string | Bağlantı · en çok 600 | |
error | string | Neden başarısız oldu · en çok 600 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_open | Gönderi yalnızca ileri gidebilir: zamanlandı → paylaşılıyor → paylaşıldı ya da başarısız. |
Yayımladığı olaylar: creative.posted, creative.post_failed
Neye yazar: creative_post (update) — Moves the post forward; creative_generation (update) — Adds "used on <channel>"
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_open · 429 çok sık istek
creative.note_provider_job
Sağlayıcı işini kaydet — Bir MuAPI isteğini sonucu sorulmadan önce kaydeder; böylece kurtarma sırasında iki kez gönderilmez. Yalnızca makine.
Gereken izin creative:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/creative_generations/{id}/actions/note_provider_job- Asıl adres:
POST /api/v1/actions/creative.note_provider_job
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
requestId | string | evet | Sağlayıcı isteği · en çok 200 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_running | Sağlayıcı işini yalnızca çalışan bir stüdyo aracı kaydedebilir. |
Neye yazar: creative_generation (update) — Saves the provider request id
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_running · 429 çok sık istek
creative.park_generation
Sahibinin bilgisayarını bekle — Bir kişinin kendi planıyla çalışan bir üretimi, bilgisayarı yeniden açılana kadar bekletir. Yalnızca sistem kullanır.
Gereken izin creative:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/creative_generations/{id}/actions/park_generation- Asıl adres:
POST /api/v1/actions/creative.park_generation
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
waiting | object / array | evet | Çalıştırıcı işi |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_running | Yalnızca devam eden bir üretim bekletilebilir. |
bad_waiting | Beklenen işin belirtilmesi gerekir. |
Neye yazar: creative_generation (update) — running → waiting
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_running, bad_waiting · 429 çok sık istek
creative.record_use
Nerede kullanıldığını kaydet — Bir sonucun bir ürüne, yazıya, e-postaya ya da web sitesine konduğunu hatırlar.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/record_use- Asıl adres:
POST /api/v1/actions/creative.record_use
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
target | string | evet | Kullanıldığı yer · product, blog_post, campaign, website, files, download, social, export, marketplace · en çok 20 |
targetId | string | Kayıt · en çok 64 | |
label | string | Ad · en çok 200 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Yalnızca biten bir üretim kullanılabilir. |
bad_target | Kullanım yeri Creative Studio’nun tanıdığı yerlerden biri olmalı. |
Yayımladığı olaylar: creative.used
Neye yazar: creative_generation (update) — Appends the use
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/record_use \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"target":"Used on"}'{
"ok": true,
"result": "…",
"events": [
"creative.used"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.recordUse("CREATIVE_GENERATION_ID", {
target: "Used on"
})era creative_generations record_use CREATIVE_GENERATION_ID \
--target "Used on"{
"name": "era__creative__record_use",
"arguments": {
"id": "CREATIVE_GENERATION_ID",
"target": "Used on"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, bad_target · 429 çok sık istek
creative.remove
Geçmişten kaldır — Biten bir üretimi geçmişten kaldırır. Dosyaları Dosyalar’da kalır.
Gereken izin creative:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/creative_generations/{id}/actions/remove- Asıl adres:
POST /api/v1/actions/creative.remove
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Üretim bulunamadı ya da henüz tamamlanmadı. |
Neye yazar: creative_generation (delete) — Deletes the history row
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/remove \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.remove("CREATIVE_GENERATION_ID")era creative_generations remove CREATIVE_GENERATION_ID{
"name": "era__creative__remove",
"arguments": {
"id": "CREATIVE_GENERATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
creative.remove_ad
Reklam kütüphanesinden kaldır — Bir reklamı kütüphaneden çıkarır.
Gereken izin creative:delete · siler ya da geri alınamaz
https://app.getera.io/api/v1/creative_ads/{id}/actions/remove_ad- Asıl adres:
POST /api/v1/actions/creative.remove_ad
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Reklam · kimliği: creative_ad |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu reklam bu çalışma alanının kütüphanesinde bulunamadı. |
Neye yazar: creative_ad (delete) — Deletes the ad
curl -X POST https://app.getera.io/api/v1/creative_ads/CREATIVE_AD_ID/actions/remove_ad \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeAds.removeAd("CREATIVE_AD_ID")era creative_ads remove_ad CREATIVE_AD_ID{
"name": "era__creative__remove_ad",
"arguments": {
"id": "CREATIVE_AD_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
creative.remove_voice
Sesi kaldır — Klonlanmış bir sesi siler (sağlayıcıda da).
Gereken izin creative:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/creative_voices/{id}/actions/remove_voice- Asıl adres:
POST /api/v1/actions/creative.remove_voice
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Ses · kimliği: creative_voice |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu ses bu çalışma alanında bulunamadı. |
Neye yazar: creative_voice (delete) — Deletes the voice
curl -X POST https://app.getera.io/api/v1/creative_voices/CREATIVE_VOICE_ID/actions/remove_voice \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeVoices.removeVoice("CREATIVE_VOICE_ID")era creative_voices remove_voice CREATIVE_VOICE_ID{
"name": "era__creative__remove_voice",
"arguments": {
"id": "CREATIVE_VOICE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
creative.resume_provider
Sağlayıcı sonucunu yeniden kontrol et — Kaydedilmiş MuAPI işini, yeni bir üretim satın almadan yeniden sorar.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/resume_provider- Asıl adres:
POST /api/v1/actions/creative.resume_provider
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Başarısız bir stüdyo aracının devam edebilmesi için kaydedilmiş bir sağlayıcı isteği olmalı. |
Yayımladığı olaylar: creative.requested
Neye yazar: creative_generation (update) — Requeues polling of the saved provider job
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/resume_provider \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"creative.requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.resumeProvider("CREATIVE_GENERATION_ID")era creative_generations resume_provider CREATIVE_GENERATION_ID{
"name": "era__creative__resume_provider",
"arguments": {
"id": "CREATIVE_GENERATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
creative.save_ad
Reklamı kütüphaneye kaydet — Beğendiğin bir reklamı (Meta Reklam Kütüphanesi’nden, bir bağlantıdan ya da ekran görüntüsünden) saklar; Kreatif Stüdyo ürünün için benzerini yapabilir.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_ads/actions/save_ad- Asıl adres:
POST /api/v1/actions/creative.save_ad
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
source | string | evet | Nereden · meta_ad_library, url, upload veya own · en çok 20 |
title | string | evet | Ad · en çok 200 |
externalId | string | Kütüphane kimliği · en çok 120 | |
advertiser | string | Reklamveren · en çok 200 | |
body | string | Reklam metni · en çok 4000 | |
linkUrl | string | Bağlantı · en çok 2000 | |
snapshotUrl | string | Reklam önizleme bağlantısı · en çok 2000 | |
mediaFileIds | object / array | Ekran görüntüleri | |
mediaUrls | object / array | Medya bağlantıları | |
platforms | object / array | Platformlar | |
startedOn | string | Yayında olduğu tarih · en çok 10 | |
tags | object / array | Etiketler | |
notes | string | Neden beğendik · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
bad_source | Kaynak, kütüphanenin tanıdığı kaynaklardan biri olmalı. |
empty_title | Reklamın bir adı olmalı. |
Neye yazar: creative_ad (upsert) — Adds (or refreshes) the ad in the library
curl -X POST https://app.getera.io/api/v1/creative_ads/actions/save_ad \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"source":"From","title":"Name"}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeAds.saveAd({
source: "From",
title: "Name"
})era creative_ads save_ad \
--source "From" \
--title "Name"{
"name": "era__creative__save_ad",
"arguments": {
"source": "From",
"title": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_source, empty_title · 429 çok sık istek
creative.save_brand_kit
Marka kitini kaydet — Ad, renkler, yazı tipleri, logo ve ses tonu — Kreatif Stüdyo, tek bir üretim için kapatmazsan bunları her üretime ekler.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_brand_kits/actions/save_brand_kit- Asıl adres:
POST /api/v1/actions/creative.save_brand_kit
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | evet | Marka adı · en çok 120 |
tagline | string | Slogan · en çok 200 | |
voice | string | Ses tonu · en çok 600 | |
audience | string | Kimin için · en çok 300 | |
colours | object / array | Renkler · En fazla 8 hex renk, ör. ["#1F2937", "#7C83FD"]. | |
fonts | object / array | Yazı tipleri · En fazla 4 yazı tipi adı. | |
logoFileId | uuid | Logo · kimliği: file | |
referenceFileIds | object / array | Referans görseller · Görünümü gösteren fotoğrafların dosya kimlikleri. | |
wordsUse | string | Kullandığımız kelimeler · en çok 600 | |
wordsAvoid | string | Kaçındığımız kelimeler ve görünümler · en çok 600 | |
applyByDefault | boolean | Her üretimde kullan | |
sector | string | Sektör · food, cafe, bakery, beauty, barber, fashion, jewellery, cosmetics, home, health, realestate, ecommerce. · en çok 40 | |
syncedFrom | object / array | Çalışma alanından alındı |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
empty_name | Marka kitinin bir adı olmalı. |
bad_colour | Renkler #1A2B3C gibi onaltılık değerler olmalı. |
unknown_sector | Sektör, Kreatif Stüdyo’nun tanıdığı bir sektör olmalı. |
Neye yazar: creative_brand_kit (upsert) — Writes the one brand kit of the workspace
curl -X POST https://app.getera.io/api/v1/creative_brand_kits/actions/save_brand_kit \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Brand name"}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeBrandKits.saveBrandKit({
name: "Brand name"
})era creative_brand_kits save_brand_kit \
--name "Brand name"{
"name": "era__creative__save_brand_kit",
"arguments": {
"name": "Brand name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 empty_name, bad_colour, unknown_sector · 429 çok sık istek
creative.save_caption
Gönderi metnini kaydet — Bir sonuçla birlikte paylaşılacak açıklamayı ve etiketleri saklar.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/save_caption- Asıl adres:
POST /api/v1/actions/creative.save_caption
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sonuç · kimliği: creative_generation |
text | string | evet | Metin · en çok 2200 |
hashtags | object / array | Hashtag’ler · En fazla 30, # ile ya da # olmadan. | |
channel | string | Kanal · en çok 40 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
empty_caption | Bir açıklama metin içerir. |
not_found | Sonuç bu çalışma alanında bulunmalı. |
Neye yazar: creative_generation (update) — Sets the caption
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/save_caption \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"text":"Text"}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.saveCaption("CREATIVE_GENERATION_ID", {
text: "Text"
})era creative_generations save_caption CREATIVE_GENERATION_ID \
--text "Text"{
"name": "era__creative__save_caption",
"arguments": {
"id": "CREATIVE_GENERATION_ID",
"text": "Text"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 empty_caption, not_found · 429 çok sık istek
creative.schedule_post
Sosyal medyada paylaş — Bir Kreatif Stüdyo sonucunu (ya da dosyaları) bir Instagram, Facebook, TikTok ya da YouTube hesabında şimdi ya da belirli bir saatte paylaşır. Paylaşmadan önce her zaman sorar.
Gereken izin creative:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/creative_posts/actions/schedule_post- Asıl adres:
POST /api/v1/actions/creative.schedule_post
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
generationId | uuid | Sonuç · kimliği: creative_generation | |
fileIds | object / array | Dosyalar · Bütün bir sonuç değilse paylaşılacak dosya kimlikleri. | |
channel | string | evet | Koşul · instagram, facebook, tiktok veya youtube · en çok 20 |
connectionId | uuid | evet | Hesap · Bağlı hesap (Ayarlar → Uygulamalar). |
caption | string | Açıklama · en çok 2200 | |
title | string | Başlık (YouTube) · en çok 100 | |
scheduledAt | string | Ne zaman · ISO tarih-saat; boş = şimdi. · en çok 40 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
bad_channel | Kanal Instagram, Facebook, TikTok ya da YouTube olmalı. |
not_ready | Yalnızca biten bir sonuç paylaşılabilir. |
nothing_to_post | Paylaşılacak bir görsel ya da video olmalı. |
wrong_media | TikTok ve YouTube için video gerekir; YouTube için ayrıca başlık gerekir. |
no_connection | Hesap bağlı olmalı ve paylaşımı yapan kişi tarafından kullanılabilmeli. |
bad_time | Zaman, en fazla altı ay sonrası için geçerli bir tarih olmalı. |
Yayımladığı olaylar: creative.post_scheduled
Neye yazar: creative_post (insert) — A scheduled post; the studio posts it when it is due
curl -X POST https://app.getera.io/api/v1/creative_posts/actions/schedule_post \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channel":"Where","connectionId":"CONNECTION_ID"}'{
"ok": true,
"result": "…",
"events": [
"creative.post_scheduled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativePosts.schedulePost({
channel: "Where",
connectionId: "CONNECTION_ID"
})era creative_posts schedule_post \
--channel "Where" \
--connection-id "CONNECTION_ID"{
"name": "era__creative__schedule_post",
"arguments": {
"channel": "Where",
"connectionId": "CONNECTION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_channel, not_ready, nothing_to_post, wrong_media, no_connection, bad_time · 429 çok sık istek
creative.set_favourite
Favori — Kolayca bulunması için bir üretimi yıldızlar.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/set_favourite- Asıl adres:
POST /api/v1/actions/creative.set_favourite
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
favourite | boolean | evet | Favori |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu üretim bu çalışma alanında bulunamadı. |
Neye yazar: creative_generation (update) — Sets the star
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/set_favourite \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"favourite":true}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.setFavourite("CREATIVE_GENERATION_ID", {
favourite: true
})era creative_generations set_favourite CREATIVE_GENERATION_ID \
--favourite true{
"name": "era__creative__set_favourite",
"arguments": {
"id": "CREATIVE_GENERATION_ID",
"favourite": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
creative.start_generation
Üretimi başlat — Sıradaki bir üretimi onu yapacak çalışana ayırır. Yalnızca makine.
Gereken izin creative:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/creative_generations/{id}/actions/start_generation- Asıl adres:
POST /api/v1/actions/creative.start_generation
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Üretim · kimliği: creative_generation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_queued | Yalnızca sırada bekleyen bir üretim başlatılabilir ve yalnızca bir kez. |
Neye yazar: creative_generation (update) — queued → running
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_queued · 429 çok sık istek
creative.vary
Buna benzer — Biten bir görselin yeni çekimleri: aynı konu ve ürün; yeni kompozisyon, açı ve ışık. Bir seferde 1–4 tane.
Gereken izin creative:write · veriyi değiştirir
https://app.getera.io/api/v1/creative_generations/{id}/actions/vary- Asıl adres:
POST /api/v1/actions/creative.vary
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Resim · kimliği: creative_generation |
count | number | Kaç tane · en az 1 · en çok 4 | |
note | string | Neyi değiştirelim · en çok 600 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Yalnızca bitmiş bir görselin benzeri üretilebilir. |
no_source | Kendi aboneliğiniz ya da anahtarınız bunu üretebilmeli. |
budget_exceeded | Çalışma alanının yapay zekâ bütçesi doldu. |
Yayımladığı olaylar: creative.requested
Neye yazar: creative_generation (insert) — Queues the variations
curl -X POST https://app.getera.io/api/v1/creative_generations/CREATIVE_GENERATION_ID/actions/vary \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"count":1}'{
"ok": true,
"result": "…",
"events": [
"creative.requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.creativeGenerations.vary("CREATIVE_GENERATION_ID", {
count: 1
})era creative_generations vary CREATIVE_GENERATION_ID \
--count 1{
"name": "era__creative__vary",
"arguments": {
"id": "CREATIVE_GENERATION_ID",
"count": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde creative:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, no_source, budget_exceeded · 429 çok sık istek
Veri modelleri
CreativeAd
Tablo creative_ad · Kaynak creative_ads
GET /api/v1/creative_adsGET /api/v1/creative_ads/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
created_by | string (uuid) · uuid | evet | app_user | |
source | string · text | meta_ad_library, url, upload, own | ||
external_id | string · text | evet | ||
title | string · text | |||
advertiser | string · text | evet | ||
body | string · text | evet | ||
link_url | string · text | evet | ||
snapshot_url | string · text | evet | ||
media_file_ids | string[] · uuid[] | |||
media_urls | string[] · text[] | |||
platforms | string[] · text[] | |||
started_on | string (date) · date | evet | ||
tags | string[] · text[] | |||
notes | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
CreativeBrandKit
Tablo creative_brand_kit · Kaynak creative_brand_kits
GET /api/v1/creative_brand_kitsGET /api/v1/creative_brand_kits/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
name | string · text | |||
tagline | string · text | evet | ||
voice | string · text | evet | ||
audience | string · text | evet | ||
colours | string[] · text[] | |||
fonts | string[] · text[] | |||
logo_file_id | string (uuid) · uuid | evet | ||
reference_file_ids | string[] · uuid[] | |||
words_use | string · text | evet | ||
words_avoid | string · text | evet | ||
apply_by_default | boolean · bool | |||
updated_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
sector | string · text | evet | ||
synced_from | object · jsonb | evet | ||
synced_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK (((array_length(colours, 1) IS NULL) OR (array_length(colours, 1) <= 8)))
CreativeGeneration
Tablo creative_generation · Kaynak creative_generations
GET /api/v1/creative_generationsGET /api/v1/creative_generations/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
created_by | string (uuid) · uuid | evet | app_user | |
kind | string · text | image, video, tts, audio | ||
prompt | string · text | |||
preset | string · text | evet | ||
model | string · text | |||
used_model | string · text | evet | ||
provider | string · text | evet | ||
source_kind | string · text | evet | ||
aspect | string · text | evet | ||
duration_sec | string (decimal) · numeric | evet | ||
count | integer · int4 | |||
voice | string · text | evet | ||
input_file_ids | string[] · uuid[] | |||
status | string · text | queued, running, waiting, succeeded, failed, cancelled | ||
cost_usd | string (decimal) · numeric | |||
refunded | boolean · bool | |||
outputs | object · jsonb | |||
error | string · text | evet | ||
favourite | boolean · bool | |||
uses | object · jsonb | |||
surface | string · text | |||
started_at | string (date-time) · timestamptz | evet | ||
finished_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
connection | object · jsonb | evet | ||
input_urls | string[] · text[] | |||
waiting | object · jsonb | evet | ||
input_video_ids | string[] · uuid[] | |||
resolution | string · text | evet | ||
tool | string · text | evet | ||
input_audio_ids | string[] · uuid[] | |||
brand | object · jsonb | evet | ||
harness | string · text | evet | ||
upscale | integer · int2 | evet | ||
voice_id | string (uuid) · uuid | evet | ||
parent_id | string (uuid) · uuid | evet | creative_generation | |
root_id | string (uuid) · uuid | evet | creative_generation | |
version | integer · int2 | |||
edit_note | string · text | evet | ||
edit_check | object · jsonb | evet | ||
batch_id | string (uuid) · uuid | evet | ||
batch_kind | string · text | evet | ||
batch_label | string · text | evet | ||
shot | string · text | evet | ||
channel | string · text | evet | ||
product_id | string (uuid) · uuid | evet | ||
source_generation_id | string (uuid) · uuid | evet | creative_generation | |
caption | object · jsonb | evet | ||
layout | object · jsonb | evet | ||
higgsfield | object · jsonb | evet | ||
studio | string · text | evet |
Birincil anahtar: id
Denetimler:
CHECK (((batch_kind IS NULL) OR (batch_kind = ANY (ARRAY['set'::text, 'batch'::text, 'variations'::text]))))CHECK (((batch_label IS NULL) OR (length(batch_label) <= 120)))CHECK (((count >= 1) AND (count <= 4)))CHECK (((edit_note IS NULL) OR (length(edit_note) <= 2000)))CHECK (((resolution IS NULL) OR (resolution = ANY (ARRAY['480p'::text, '720p'::text, '1080p'::text]))))CHECK (((source_kind IS NULL) OR (source_kind = ANY (ARRAY['native'::text, 'byos'::text, 'byok'::text])))) NOT VALIDCHECK (((studio IS NULL) OR (studio = ANY (ARRAY['image'::text, 'video'::text, 'cinema'::text, 'character'::text, 'lipsync'::text, 'motion'::text, 'recast'::text, 'clip'::text, 'layers'::text, 'audio'::text, 'marketing'::text, 'product'::text]))))CHECK (((tool IS NULL) OR (tool = ANY (ARRAY['lip_sync'::text, 'talking_photo'::text, 'face_swap'::text, 'upscale'::text, 'video_edit'::text, 'layout'::text, 'photo_reel'::text, 'higgsfield'::text, 'image_grade'::text]))))CHECK (((upscale IS NULL) OR (upscale = ANY (ARRAY[2, 4]))))CHECK (((version >= 1) AND (version <= 999)))
CreativePost
Tablo creative_post · Kaynak creative_posts
GET /api/v1/creative_postsGET /api/v1/creative_posts/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
created_by | string (uuid) · uuid | evet | app_user | |
generation_id | string (uuid) · uuid | evet | creative_generation | |
file_ids | string[] · uuid[] | |||
channel | string · text | instagram, facebook, tiktok, youtube | ||
connection_id | string (uuid) · uuid | |||
connection_label | string · text | evet | ||
caption | string · text | |||
title | string · text | evet | ||
scheduled_at | string (date-time) · timestamptz | |||
status | string · text | scheduled, posting, posted, failed, cancelled | ||
external_id | string · text | evet | ||
external_url | string · text | evet | ||
error | string · text | evet | ||
attempts | integer · int4 | |||
posted_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
CreativeVoice
Tablo creative_voice · Kaynak creative_voices
GET /api/v1/creative_voicesGET /api/v1/creative_voices/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
created_by | string (uuid) · uuid | evet | app_user | |
name | string · text | |||
provider | string · text | |||
external_voice_id | string · text | evet | ||
sample_file_ids | string[] · uuid[] | |||
consent_by | string (uuid) · uuid | evet | app_user | |
consent_at | string (date-time) · timestamptz | |||
source_kind | string · text | evet | ||
connection_id | string (uuid) · uuid | evet | ||
status | string · text | pending, ready, failed | ||
error | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((provider = 'elevenlabs'::text))CHECK (((source_kind IS NULL) OR (source_kind = 'byok'::text)))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
creative.failed | Bir üretim başarısız oldu; ücret alınmadı. | id, error, recipientUserId |
creative.generated | Bir üretim bitti; sonuçları Dosyalar’da. | id, kind, count, recipientUserId |
creative.post_failed | Bir sosyal medya gönderisi yayımlanamadı. | id, channel, error, recipientUserId |
creative.post_scheduled | Bir sonuç sosyal medyada paylaşılmak üzere planlandı. | id, channel, generationId, scheduledAt |
creative.posted | Bir gönderi Instagram, Facebook, TikTok ya da YouTube’da yayına çıktı. | id, channel, url, recipientUserId |
creative.requested | Biri (ya da Era veya bir iş akışı) görsel, video, seslendirme ya da müzik istedi. | id, kind, preset |
creative.used | Bir sonuç bir ürüne, yazıya, e-postaya ya da web sitesine kondu. | id, target, targetId |
creative.voice_requested | Biri (konuşanın izniyle) bir ses klonlamak istedi. | id, name |