Kampanyalar API

Kampanyalar modülünün tüm işlemleri (16) ve veri modelleri (7): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.

Müşterilerinize e-posta, SMS ve WhatsApp kampanyaları; açılma ve tıklamalarla.

Modül kodu campaigns · 16 işlem · 7 veri modeli · 12 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ı: campaigns (hepsi), campaigns:read (yalnız okuma) ya da campaigns:<yetenek>.

Kaynaklar

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
audience_factsaudience_fact/api/v1/audience_facts
audiencesaudience/api/v1/audiencescampaigns.create_audiencecampaigns.update_audiencecampaigns.delete_audience
campaign_clickscampaign_click/api/v1/campaign_clicks
campaign_linkscampaign_link/api/v1/campaign_links
campaign_recipientscampaign_recipient/api/v1/campaign_recipients
campaignscampaign/api/v1/campaignscampaigns.createcampaigns.updatecampaigns.delete
marketing_unsubscribesmarketing_unsubscribe/api/v1/marketing_unsubscribes

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

İşlemGereken izinNe yapar
campaigns.cancelcampaigns:writeGöndermeyi durdur
campaigns.createcampaigns:writeKampanya taslağı hazırla
campaigns.create_audiencecampaigns:writeKitle oluştur
campaigns.deletecampaigns:deleteTaslak kampanyayı sil
campaigns.delete_audiencecampaigns:deleteKitleyi sil
campaigns.record_batchcampaigns:handleGönderilen grubu kaydet
campaigns.resubscribecampaigns:manageAbonelikten çıkanlar listesinden çıkar
campaigns.resubscribe_mecampaigns:writeBana yeniden kampanya mesajı gönderilsin
campaigns.schedulecampaigns:writeZamanla veya gönder
campaigns.send_testcampaigns:writeTest gönder
campaigns.startcampaigns:handleZamanı gelen kampanyayı başlat
campaigns.unschedulecampaigns:writeTaslağa geri al
campaigns.unsubscribecampaigns:writeAdresin aboneliğini iptal et
campaigns.unsubscribe_mecampaigns:writeBana kampanya mesajı gönderilmesin
campaigns.updatecampaigns:writeKampanyayı düzenle
campaigns.update_audiencecampaigns:writeKitleyi düzenle

campaigns.cancel

Göndermeyi durdur — Zamanlanmış veya gönderilmekte olan kampanyayı durdurur; henüz gönderilmeyenlere gönderilmez.

Gereken izin campaigns:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/cancel
API anahtarı ya da OAuth token · campaigns:write
  • Asıl adres: POST /api/v1/actions/campaigns.cancel

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
campaign_not_cancellableYalnızca zamanlanmış veya gönderilmekte olan bir kampanya durdurulur.

Yayımladığı olaylar: campaigns.cancelled

Neye yazar: campaign (update) — Marks it cancelled; campaign_recipient (update) — Skips those not yet sent to

curl -X POST https://app.getera.io/api/v1/campaigns/CAMPAIGN_ID/actions/cancel \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.cancelled"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.campaigns.cancel("CAMPAIGN_ID")
era campaigns cancel CAMPAIGN_ID
tools/call
{
  "name": "era__campaigns__cancel",
  "arguments": {
    "id": "CAMPAIGN_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, campaign_not_cancellable · 429 çok sık istek

campaigns.create

Kampanya taslağı hazırla — Bir kitleye test edilmek, zamanlanmak ve gönderilmek üzere bir e-posta, SMS veya WhatsApp mesajı.

Gereken izin campaigns:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/campaigns/actions/create
API anahtarı ya da OAuth token · campaigns:write
  • REST kısayolu: POST /api/v1/campaigns
  • Asıl adres: POST /api/v1/actions/campaigns.create

Girdi

AlanTürZorunluAçıklama
namestringevetAd · en çok 200
channelstring (enum)Gönderme yolu · İzin verilen değerler: email, sms, whatsapp
formatstring (enum)Biçim · İzin verilen değerler: text, html
subjectstringKonu · en çok 300
subjectBstringKonu B (A/B testi) · en çok 300
preheaderstringÖnizleme satırı · en çok 200
bodystringMesaj · en çok 20000
blocksobject / arrayE-posta blokları
audienceIduuidevetKitle · kimliği: audience

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
audience_not_foundKitle bulunmalı.
invalid_campaign_blocksE-posta düzeni, geçerli bağlantılar içeren bilinen bloklardan oluşan bir liste olmalı.

Yayımladığı olaylar: campaigns.created

Neye yazar: campaign (insert) — Writes the draft

curl -X POST https://app.getera.io/api/v1/campaigns/actions/create \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name","audienceId":"AUDIENCE_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.created"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.campaigns.create({
  name: "Name",
  audienceId: "AUDIENCE_ID"
})
era campaigns create \
  --name "Name" \
  --audience-id "AUDIENCE_ID"
tools/call
{
  "name": "era__campaigns__create",
  "arguments": {
    "name": "Name",
    "audienceId": "AUDIENCE_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 audience_not_found, invalid_campaign_blocks · 429 çok sık istek

campaigns.create_audience

Kitle oluştur — Kayıtlı bir müşteri segmenti: alanları, etiketleri, potansiyel müşteri olup olmadıkları ve ne satın aldıkları veya ayırttıkları.

Gereken izin campaigns:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/audiences/actions/create_audience
API anahtarı ya da OAuth token · campaigns:write
  • REST kısayolu: POST /api/v1/audiences
  • Asıl adres: POST /api/v1/actions/campaigns.create_audience

Girdi

AlanTürZorunluAçıklama
namestringevetAd · en çok 200
descriptionstringAçıklama · en çok 2000
matchstring (enum)Eşleşme · İzin verilen değerler: all, any
rulesobject / arrayKurallar

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_audience_rulesHer kural bilinen bir alan, işleç ve değer gerektirir.

Yayımladığı olaylar: campaigns.audience_changed

Neye yazar: audience (insert) — Saves the segment

curl -X POST https://app.getera.io/api/v1/audiences/actions/create_audience \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.audience_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.audiences.create({
  name: "Name"
})
era audiences create \
  --name "Name"
tools/call
{
  "name": "era__campaigns__create_audience",
  "arguments": {
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_audience_rules · 429 çok sık istek

campaigns.delete

Taslak kampanyayı sil — Hiç gönderilmemiş bir kampanyayı kaldırır.

Gereken izin campaigns:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/delete
API anahtarı ya da OAuth token · campaigns:delete
  • REST kısayolu: DELETE /api/v1/campaigns/{id}
  • Asıl adres: POST /api/v1/actions/campaigns.delete

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
campaign_not_draftYalnızca taslak değiştirilir.

Yayımladığı olaylar: campaigns.deleted

Neye yazar: campaign (delete) — Deletes the draft

curl -X POST https://app.getera.io/api/v1/campaigns/CAMPAIGN_ID/actions/delete \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.deleted"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.campaigns.delete("CAMPAIGN_ID")
era campaigns delete CAMPAIGN_ID
tools/call
{
  "name": "era__campaigns__delete",
  "arguments": {
    "id": "CAMPAIGN_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, campaign_not_draft · 429 çok sık istek

campaigns.delete_audience

Kitleyi sil — Hiçbir kampanyanın kullanmadığı bir segmenti kaldırır.

Gereken izin campaigns:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/audiences/{id}/actions/delete_audience
API anahtarı ya da OAuth token · campaigns:delete
  • REST kısayolu: DELETE /api/v1/audiences/{id}
  • Asıl adres: POST /api/v1/actions/campaigns.delete_audience

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kitle · kimliği: audience

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
audience_not_foundKitle bulunmalı.
audience_in_useBir kampanyanın kullandığı kitle kalır.

Yayımladığı olaylar: campaigns.audience_changed

Neye yazar: audience (delete) — Deletes the segment

curl -X POST https://app.getera.io/api/v1/audiences/AUDIENCE_ID/actions/delete_audience \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.audience_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.audiences.deleteAudience("AUDIENCE_ID")
era audiences delete_audience AUDIENCE_ID
tools/call
{
  "name": "era__campaigns__delete_audience",
  "arguments": {
    "id": "AUDIENCE_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 audience_not_found, audience_in_use · 429 çok sık istek

campaigns.record_batch

Gönderilen grubu kaydet — Otomatik: hangi alıcıların göndericiye verildiği ve hangilerinin atlandığı.

Gereken izin campaigns:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/record_batch
API anahtarı ya da OAuth token · campaigns:handle
  • Asıl adres: POST /api/v1/actions/campaigns.record_batch

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign
entriesobject / arrayevetKayıtlar

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
invalid_batchToplu işlem bir liste olmalı.

Yayımladığı olaylar: campaigns.batch_recorded, campaigns.sent

Neye yazar: campaign_recipient (update) — Queued or skipped; campaign (update) — Sent when nobody is left

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, invalid_batch · 429 çok sık istek

campaigns.resubscribe

Abonelikten çıkanlar listesinden çıkar — Sizden yeniden haber almak isteyen biri için.

Gereken izin campaigns:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/marketing_unsubscribes/actions/resubscribe
API anahtarı ya da OAuth token · campaigns:manage
  • Asıl adres: POST /api/v1/actions/campaigns.resubscribe

Girdi

AlanTürZorunluAçıklama
emailstringevetE-posta veya telefon · en çok 320

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unsubscribe_not_foundAdres listede olmalı.

Yayımladığı olaylar: campaigns.resubscribed

Neye yazar: marketing_unsubscribe (delete) — Removes the address

curl -X POST https://app.getera.io/api/v1/marketing_unsubscribes/actions/resubscribe \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"email":"Email or phone"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.resubscribed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.marketingUnsubscribes.resubscribe({
  email: "Email or phone"
})
era marketing_unsubscribes resubscribe \
  --email "Email or phone"
tools/call
{
  "name": "era__campaigns__resubscribe",
  "arguments": {
    "email": "Email or phone"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unsubscribe_not_found · 429 çok sık istek

campaigns.resubscribe_me

Bana yeniden kampanya mesajı gönderilsin — Giriş yapmış müşteri, kampanya e-postalarını ve SMS’lerini site hesabından yeniden açar.

Gereken izin campaigns:write · siler ya da geri alınamaz · Yayındaki bir siteden de çağrılabilir (customer)

Bir web sitesi işlemi: siteniz bunu site API’si üzerinden çağırır (/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).
POSThttps://app.getera.io/api/v1/marketing_unsubscribes/actions/resubscribe_me
API anahtarı ya da OAuth token · campaigns:write
  • Asıl adres: POST /api/v1/actions/campaigns.resubscribe_me

Girdi

Bu işlem girdi almaz.

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_contact_on_recordMüşterinin kaydında bir e-posta ya da telefon olmalı.
unsubscribe_not_foundListede böyle bir abonelikten çıkma kaydı yok.

Yayımladığı olaylar: campaigns.resubscribed

Neye yazar: marketing_unsubscribe (delete) — Their own address off the list

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_contact_on_record, unsubscribe_not_found · 429 çok sık istek

campaigns.schedule

Zamanla veya gönder — Seçilen zamanda ya da şimdi gönderir; bildirimler üzerinden gruplar hâlinde gider.

Gereken izin campaigns: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

POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/schedule
API anahtarı ya da OAuth token · campaigns:write
  • Asıl adres: POST /api/v1/actions/campaigns.schedule

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign
sendAtdate-timeGönderim zamanı

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
campaign_not_draftYalnızca taslak değiştirilir.
campaign_incompleteBir mesaj (e-posta için bir konu da) gerekli; SMS en fazla 1500 karakterdir.
campaign_no_channelE-posta kampanyası aktif bir e-posta kanalı gerektirir.
audience_emptyKitle en az bir adrese ulaşmalı.

Yayımladığı olaylar: campaigns.scheduled

Neye yazar: campaign (update) — Marks it scheduled

curl -X POST https://app.getera.io/api/v1/campaigns/CAMPAIGN_ID/actions/schedule \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"sendAt":"2026-11-02T09:00:00Z"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.scheduled"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.campaigns.schedule("CAMPAIGN_ID", {
  sendAt: "2026-11-02T09:00:00Z"
})
era campaigns schedule CAMPAIGN_ID \
  --send-at "2026-11-02T09:00:00Z"
tools/call
{
  "name": "era__campaigns__schedule",
  "arguments": {
    "id": "CAMPAIGN_ID",
    "sendAt": "2026-11-02T09:00:00Z"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, campaign_not_draft, campaign_incomplete, campaign_no_channel, audience_empty · 429 çok sık istek

campaigns.send_test

Test gönder — Kampanyanın kullanacağı e-posta kanalından tek bir adrese bir kopya — tasarlanmış e-posta gideceği gibi.

Gereken izin campaigns:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/send_test
API anahtarı ya da OAuth token · campaigns:write
  • Asıl adres: POST /api/v1/actions/campaigns.send_test

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign
tostringevetGönderilecek adres · en çok 320
variantstring (enum)Konu · İzin verilen değerler: a, b

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
invalid_recipientAdres bir e-posta adresi olmalı.

Yayımladığı olaylar: campaigns.test_requested

Neye yazar: campaign (update) — Stamps when a test last went

curl -X POST https://app.getera.io/api/v1/campaigns/CAMPAIGN_ID/actions/send_test \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"to":"Send to"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.test_requested"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.campaigns.sendTest("CAMPAIGN_ID", {
  to: "Send to"
})
era campaigns send_test CAMPAIGN_ID \
  --to "Send to"
tools/call
{
  "name": "era__campaigns__send_test",
  "arguments": {
    "id": "CAMPAIGN_ID",
    "to": "Send to"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, invalid_recipient · 429 çok sık istek

campaigns.start

Zamanı gelen kampanyayı başlat — Otomatik: alıcıları listeler, izlenecek bağlantıları kaydeder ve göndermeye başlar.

Gereken izin campaigns:handle · veriyi değiştirir

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/start
API anahtarı ya da OAuth token · campaigns:handle
  • Asıl adres: POST /api/v1/actions/campaigns.start

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
campaign_not_dueYalnızca zamanı gelmiş zamanlanmış bir kampanya başlar.

Yayımladığı olaylar: campaigns.started, campaigns.sent

Neye yazar: campaign_recipient (insert) — One row per address; campaign_link (insert) — One row per link in the email, for click tracking; campaign (update) — Marks it sending

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, campaign_not_due · 429 çok sık istek

campaigns.unschedule

Taslağa geri al — Zamanlanmış kampanyayı başlamadan önce taslağa geri alır.

Gereken izin campaigns:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/unschedule
API anahtarı ya da OAuth token · campaigns:write
  • Asıl adres: POST /api/v1/actions/campaigns.unschedule

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
campaign_not_scheduledYalnızca zamanlanmış bir kampanyanın zamanlaması kaldırılır.

Yayımladığı olaylar: campaigns.updated

Neye yazar: campaign (update) — Back to draft

curl -X POST https://app.getera.io/api/v1/campaigns/CAMPAIGN_ID/actions/unschedule \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.campaigns.unschedule("CAMPAIGN_ID")
era campaigns unschedule CAMPAIGN_ID
tools/call
{
  "name": "era__campaigns__unschedule",
  "arguments": {
    "id": "CAMPAIGN_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, campaign_not_scheduled · 429 çok sık istek

campaigns.unsubscribe

Adresin aboneliğini iptal et — Bir adresi veya telefon numarasını abonelikten çıkanlar listesine koyar — mesajın bağlantısından ya da talep üzerine bir üye tarafından.

Gereken izin campaigns:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)

Bir web sitesi işlemi: siteniz bunu site API’si üzerinden çağırır (/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).
POSThttps://app.getera.io/api/v1/marketing_unsubscribes/actions/unsubscribe
API anahtarı ya da OAuth token · campaigns:write
  • Asıl adres: POST /api/v1/actions/campaigns.unsubscribe

Girdi

AlanTürZorunluAçıklama
tokenstringBağlantı anahtarı · en çok 100
emailstringE-posta · en çok 320
phonestringTelefon · en çok 40
reasonstringNeden · en çok 1000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unsubscribe_link_invalidBağlantı anahtarı bu çalışma alanının gönderdiği bir anahtar olmalı.
unsubscribe_link_requiredSiteden abonelikten çıkmak yalnızca mesajdaki bağlantıyla yapılabilir.
invalid_recipientAdres bir e-posta adresi veya telefon numarası olmalı.

Yayımladığı olaylar: campaigns.unsubscribed

Neye yazar: marketing_unsubscribe (insert) — Adds the address to the list

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unsubscribe_link_invalid, unsubscribe_link_required, invalid_recipient · 429 çok sık istek

campaigns.unsubscribe_me

Bana kampanya mesajı gönderilmesin — Giriş yapmış müşteri, kampanya e-postalarını ve SMS’lerini site hesabından kapatır.

Gereken izin campaigns:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (customer)

Bir web sitesi işlemi: siteniz bunu site API’si üzerinden çağırır (/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).
POSThttps://app.getera.io/api/v1/marketing_unsubscribes/actions/unsubscribe_me
API anahtarı ya da OAuth token · campaigns:write
  • Asıl adres: POST /api/v1/actions/campaigns.unsubscribe_me

Girdi

Bu işlem girdi almaz.

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_contact_on_recordMüşterinin kaydında bir e-posta ya da telefon olmalı.
already_unsubscribedZaten abonelikten çıkılmış.

Yayımladığı olaylar: campaigns.unsubscribed

Neye yazar: marketing_unsubscribe (insert) — Their own address on the list

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_contact_on_record, already_unsubscribed · 429 çok sık istek

campaigns.update

Kampanyayı düzenle — Taslağın adını, kanalını, konusunu, mesajını, e-posta bloklarını veya kitlesini değiştirir.

Gereken izin campaigns:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/campaigns/{id}/actions/update
API anahtarı ya da OAuth token · campaigns:write
  • REST kısayolu: PATCH /api/v1/campaigns/{id}
  • Asıl adres: POST /api/v1/actions/campaigns.update

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kampanya · kimliği: campaign
namestringAd · en çok 200
channelstring (enum)Gönderme yolu · İzin verilen değerler: email, sms, whatsapp
formatstring (enum)Biçim · İzin verilen değerler: text, html
subjectstringKonu · en çok 300
subjectBstringKonu B (A/B testi) · en çok 300
preheaderstringÖnizleme satırı · en çok 200
bodystringMesaj · en çok 20000
blocksobject / arrayE-posta blokları
audienceIduuidKitle · kimliği: audience

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
campaign_not_foundKampanya bulunmalı.
campaign_not_draftYalnızca taslak değiştirilir.
audience_not_foundKitle bulunmalı.
invalid_campaign_blocksE-posta düzeni, geçerli bağlantılar içeren bilinen bloklardan oluşan bir liste olmalı.

Yayımladığı olaylar: campaigns.updated

Neye yazar: campaign (update) — Rewrites the draft

curl -X POST https://app.getera.io/api/v1/campaigns/CAMPAIGN_ID/actions/update \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.campaigns.update("CAMPAIGN_ID", {
  name: "Name"
})
era campaigns update CAMPAIGN_ID \
  --name "Name"
tools/call
{
  "name": "era__campaigns__update",
  "arguments": {
    "id": "CAMPAIGN_ID",
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 campaign_not_found, campaign_not_draft, audience_not_found, invalid_campaign_blocks · 429 çok sık istek

campaigns.update_audience

Kitleyi düzenle — Segmentin adını veya kurallarını değiştirir. Gönderilmiş kampanyalar kime gönderildiğini korur.

Gereken izin campaigns:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/audiences/{id}/actions/update_audience
API anahtarı ya da OAuth token · campaigns:write
  • REST kısayolu: PATCH /api/v1/audiences/{id}
  • Asıl adres: POST /api/v1/actions/campaigns.update_audience

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kitle · kimliği: audience
namestringAd · en çok 200
descriptionstringAçıklama · en çok 2000
matchstring (enum)Eşleşme · İzin verilen değerler: all, any
rulesobject / arrayKurallar

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
audience_not_foundKitle bulunmalı.
invalid_audience_rulesHer kural bilinen bir alan, işleç ve değer gerektirir.

Yayımladığı olaylar: campaigns.audience_changed

Neye yazar: audience (update) — Rewrites the segment

curl -X POST https://app.getera.io/api/v1/audiences/AUDIENCE_ID/actions/update_audience \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "campaigns.audience_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.audiences.updateAudience("AUDIENCE_ID", {
  name: "Name"
})
era audiences update_audience AUDIENCE_ID \
  --name "Name"
tools/call
{
  "name": "era__campaigns__update_audience",
  "arguments": {
    "id": "AUDIENCE_ID",
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde campaigns:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 audience_not_found, invalid_audience_rules · 429 çok sık istek

Veri modelleri

AudienceFact

Tablo audience_fact · Kaynak audience_facts

  • GET /api/v1/audience_facts
  • GET /api/v1/audience_facts/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
customer_idstring (uuid) · uuidcustomer
kindstring · textorder, visit, package
source_idstring · text
statestring · textopen, done, cancelled
occurred_onstring (date) · dateevet
active_untilstring (date) · dateevet
amountstring (int64) · int8
currencystring · bpchareveten çok 3
event_idstring (int64) · int8evet
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: workspace_id, kind, source_id

Denetimler:

  • CHECK ((amount >= 0))
  • CHECK (((currency IS NULL) OR (currency ~ '^[A-Z]{3}$'::text)))

Audience

Tablo audience · Kaynak audiences

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
namestring · text
descriptionstring · textevet
matchstring · textall, any
rulesobject · jsonb
created_by_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Denetimler:

  • CHECK ((length(TRIM(BOTH FROM name)) > 0))
  • CHECK ((jsonb_typeof(rules) = 'array'::text))

CampaignClick

Tablo campaign_click · Kaynak campaign_clicks

  • GET /api/v1/campaign_clicks
  • GET /api/v1/campaign_clicks/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
campaign_idstring (uuid) · uuidcampaign
link_idstring (uuid) · uuidcampaign_link
recipient_idstring (uuid) · uuidevetcampaign_recipient
occurred_atstring (date-time) · timestamptz

Birincil anahtar: id

Tablo campaign_link · Kaynak campaign_links

  • GET /api/v1/campaign_links
  • GET /api/v1/campaign_links/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
campaign_idstring (uuid) · uuidcampaign
urlstring · text
created_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: campaign_id, url

Denetimler:

  • CHECK ((url ~* '^(https?://\|mailto:\|tel:)'::text))

CampaignRecipient

Tablo campaign_recipient · Kaynak campaign_recipients

  • GET /api/v1/campaign_recipients
  • GET /api/v1/campaign_recipients/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
campaign_idstring (uuid) · uuidcampaign
customer_idstring (uuid) · uuidevetcustomer
emailstring · textevet
namestring · textevet
statestring · textpending, queued, skipped
skip_reasonstring · textevet
delivery_idstring (uuid) · uuidevetnotification_delivery
queued_atstring (date-time) · timestamptzevet
created_atstring (date-time) · timestamptz
phonestring · textevet
variantstring · bpchara, b
opened_atstring (date-time) · timestamptzevet
open_countinteger · int4
clicked_atstring (date-time) · timestamptzevet
click_countinteger · int4

Birincil anahtar: id

Tekil: campaign_id, email

Denetimler:

  • CHECK (((email IS NOT NULL) OR (phone IS NOT NULL)))

Campaign

Tablo campaign · Kaynak campaigns

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
namestring · text
subjectstring · text
bodystring · text
audience_idstring (uuid) · uuidaudience
statusstring · textdraft, scheduled, sending, sent, cancelled
scheduled_atstring (date-time) · timestamptzevet
started_atstring (date-time) · timestamptzevet
completed_atstring (date-time) · timestamptzevet
cancelled_atstring (date-time) · timestamptzevet
recipient_countinteger · int4
test_sent_atstring (date-time) · timestamptzevet
created_by_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
channelstring · textemail, sms, whatsapp
formatstring · texttext, html
blocksobject · jsonb
preheaderstring · textevet
subject_bstring · textevet

Birincil anahtar: id

Denetimler:

  • CHECK ((jsonb_typeof(blocks) = 'array'::text))
  • CHECK ((length(TRIM(BOTH FROM name)) > 0))
  • CHECK (((status <> 'scheduled'::text) OR (scheduled_at IS NOT NULL)))

MarketingUnsubscribe

Tablo marketing_unsubscribe · Kaynak marketing_unsubscribes

  • GET /api/v1/marketing_unsubscribes
  • GET /api/v1/marketing_unsubscribes/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
emailstring · textevet
customer_idstring (uuid) · uuidevetcustomer
campaign_idstring (uuid) · uuidevetcampaign
sourcestring · textlink, manual
reasonstring · textevet
created_by_user_idstring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
phonestring · textevet

Birincil anahtar: id

Tekil: workspace_id, email

Denetimler:

  • CHECK (((email IS NOT NULL) OR (phone IS NOT NULL)))
  • CHECK ((email = lower(email)))

Olaylar

İş akışları ve webhook'lar bu olaylara tepki verir.

OlayNe olurTaşıdığı alanlar
campaigns.audience_changedBir kitle oluşturuldu, düzenlendi ya da silindi.id
campaigns.batch_recordedBir kampanyanın bir gönderim partisi gönderim servisine iletildi.id, handled, pending
campaigns.cancelledBir kampanya durduruldu.id, notSent, ownerUserId
campaigns.createdBir kampanya taslağı hazırlandı.id, ownerUserId
campaigns.deletedTaslak bir kampanya silindi.id
campaigns.resubscribedBir adres yeniden abone oldu.email, customerId
campaigns.scheduledBir kampanya zamanlandı.id, scheduledAt, audienceSize, ownerUserId
campaigns.sentBir kampanya tüm alıcılar için gönderim servisine iletildi.id, recipientCount, ownerUserId
campaigns.startedBir kampanya gönderilmeye başladı.id, recipientCount
campaigns.test_requestedBir test kopyası istendi; bildirimler teslim eder.id, to, subject, text, html, sourceId
campaigns.unsubscribedBir adres abonelikten çıktı.email, phone, customerId, campaignId, source
campaigns.updatedTaslak bir kampanya düzenlendi ya da zamanlaması kaldırıldı.id
Bu sayfa yardımcı oldu mu?