PushizoDocs
API referansı

Formlar

Formlar — 5 işlem (GET /v1/apps/{appId}/forms, POST /v1/apps/{appId}/forms, GET /v1/apps/{appId}/forms/{formId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.

Bot korumalı ve rıza kayıtlı formlar: tanım, gönderim listesi ve sunucu tarafı gönderim (kullanıcı ve e-posta/SMS aboneliği oluşturur).

Taban adres: https://api.pushizo.com · Etiket: forms · Etkileşimli belge (Scalar)

İşlemler

YöntemYolİşlem
GET/v1/apps/{appId}/formsFormlar
POST/v1/apps/{appId}/formsForm oluştur
GET/v1/apps/{appId}/forms/{formId}Form detayı
GET/v1/apps/{appId}/forms/{formId}/submissionsForm gönderimleri
POST/v1/apps/{appId}/forms/{formId}/submissionsSunucu tarafı form gönderimi (external_id verilirse o kullanıcının profili güncellenir)

Ayrıntılar

Formlar

Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
limitsorguintegerHayırVarsayılan: 50; Aralık: 1–20050
cursorsorgustringHayırUzunluk: 1–∞"eyJpZCI6Im1zZ18wMUpE…"
statussorguenumHayırDeğerler: "active", "archived""active"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: FormPage

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].idstringEvet
data[].app_idstringEvet
data[].namestringEvet
data[].statusenumEvetDeğerler: "active", "archived"
data[].fieldsarray<object>EvetÖğe: 1–20
data[].fields[].idstringEvet
data[].fields[].typeenumEvetDeğerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent"
data[].fields[].labelmap<string, string>Evet
data[].fields[].placeholdermap<string, string>Hayır
data[].fields[].requiredbooleanHayır
data[].fields[].optionsarray<object>HayırÖğe: 0–30
data[].fields[].maps_tostringHayır
data[].fields[].max_lengthintegerHayırAralık: 1–2000
data[].fields[].policy_urlstring (url)HayırUzunluk: 0–2000
data[].settingsobjectEvet
data[].settings.submit_labelmap<string, string>Hayır
data[].settings.success_messagemap<string, string>Hayır
data[].settings.redirect_urlstring (url)HayırUzunluk: 0–2000
data[].settings.tagsmap<string, string>Hayır
data[].settings.subscribeobjectHayır
data[].settings.double_opt_inobjectHayır
data[].settings.event_namestringHayır
data[].settings.captchabooleanHayır
data[].settings.default_languagestringHayırUzunluk: 2–10
data[].statsobjectEvet
data[].stats.submissionsintegerEvet
data[].stats.last_submission_atstring | nullEvet
data[].created_atstringEvet
data[].updated_atstringEvet
next_cursorstring | nullEvet
has_morebooleanEvet

Örnek yanıt:

{
  "data": [
    {
      "name": "Sipariş bildirimleri",
      "status": "active",
      "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "fields": [
        {
          "type": "email",
          "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
          "label": {},
          "placeholder": {},
          "required": true
        }
      ],
      "settings": {
        "tags": {
          "plan": "pro",
          "city": "Istanbul"
        },
        "submit_label": {
          "tr": "Siparişiniz yola çıktı",
          "en": "Your order has shipped"
        }
      },
      "stats": {
        "submissions": 1,
        "last_submission_at": "örnek"
      },
      "created_at": "örnek",
      "updated_at": "örnek"
    }
  ],
  "next_cursor": "eyJpZCI6Im1zZ18wMUpE…",
  "has_more": true
}

Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).

Örnekler

curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms?limit=50" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Form oluştur

Kimlik doğrulama: API anahtarı — kapsam admin (admin her kapsamı içerir).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: CreateFormDto

AlanTürZorunluAçıklama
namestringEvetUzunluk: 2–100
fieldsarray<object>EvetÖğe: 1–20
fields[].idstringEvet
fields[].typeenumEvetDeğerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent"
fields[].labelmap<string, string>Evet
fields[].placeholdermap<string, string>Hayır
fields[].requiredbooleanHayır
fields[].optionsarray<object>HayırÖğe: 0–30
fields[].options[].valuestringEvetUzunluk: 1–100
fields[].options[].labelmap<string, string>Evet
fields[].maps_tostringHayır
fields[].max_lengthintegerHayırAralık: 1–2000
fields[].policy_urlstring (url)HayırUzunluk: 0–2000
settingsobjectHayır
settings.submit_labelmap<string, string>Hayır
settings.success_messagemap<string, string>Hayır
settings.redirect_urlstring (url)HayırUzunluk: 0–2000
settings.tagsmap<string, string>Hayır
settings.subscribeobjectHayır
settings.subscribe.emailbooleanHayır
settings.subscribe.smsbooleanHayır
settings.double_opt_inobjectHayır
settings.double_opt_in.enabledbooleanEvet
settings.double_opt_in.subjectmap<string, string>Hayır
settings.double_opt_in.bodymap<string, string>Hayır
settings.event_namestringHayır
settings.captchabooleanHayır
settings.default_languagestringHayırUzunluk: 2–10
statusenumHayırDeğerler: "active", "archived"

Örnek:

{
  "name": "Sipariş bildirimleri",
  "fields": [
    {
      "type": "email",
      "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "label": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "placeholder": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "required": true,
      "options": [
        {
          "value": "user_42",
          "label": {}
        }
      ]
    }
  ],
  "status": "active",
  "settings": {
    "tags": {
      "plan": "pro",
      "city": "Istanbul"
    },
    "submit_label": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    },
    "success_message": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    }
  }
}

Yanıtlar

201 — Başarılı.

Şema: Form

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
namestringEvet
statusenumEvetDeğerler: "active", "archived"
fieldsarray<object>EvetÖğe: 1–20
fields[].idstringEvet
fields[].typeenumEvetDeğerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent"
fields[].labelmap<string, string>Evet
fields[].placeholdermap<string, string>Hayır
fields[].requiredbooleanHayır
fields[].optionsarray<object>HayırÖğe: 0–30
fields[].options[].valuestringEvetUzunluk: 1–100
fields[].options[].labelmap<string, string>Evet
fields[].maps_tostringHayır
fields[].max_lengthintegerHayırAralık: 1–2000
fields[].policy_urlstring (url)HayırUzunluk: 0–2000
settingsobjectEvet
settings.submit_labelmap<string, string>Hayır
settings.success_messagemap<string, string>Hayır
settings.redirect_urlstring (url)HayırUzunluk: 0–2000
settings.tagsmap<string, string>Hayır
settings.subscribeobjectHayır
settings.subscribe.emailbooleanHayır
settings.subscribe.smsbooleanHayır
settings.double_opt_inobjectHayır
settings.double_opt_in.enabledbooleanEvet
settings.double_opt_in.subjectmap<string, string>Hayır
settings.double_opt_in.bodymap<string, string>Hayır
settings.event_namestringHayır
settings.captchabooleanHayır
settings.default_languagestringHayırUzunluk: 2–10
statsobjectEvet
stats.submissionsintegerEvet
stats.last_submission_atstring | nullEvet
created_atstringEvet
updated_atstringEvet

Örnek yanıt:

{
  "name": "Sipariş bildirimleri",
  "status": "active",
  "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "fields": [
    {
      "type": "email",
      "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "label": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "placeholder": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "required": true,
      "options": [
        {
          "value": "user_42",
          "label": {}
        }
      ],
      "maps_to": "değer"
    }
  ],
  "settings": {
    "tags": {
      "plan": "pro",
      "city": "Istanbul"
    },
    "submit_label": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    },
    "success_message": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    },
    "redirect_url": "https://example.com/orders/1001"
  },
  "stats": {
    "submissions": 1,
    "last_submission_at": "örnek"
  },
  "created_at": "örnek",
  "updated_at": "örnek"
}

Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).

Örnekler

curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Sipariş bildirimleri",
  "fields": [
    {
      "type": "email",
      "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "label": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "placeholder": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "required": true,
      "options": [
        {
          "value": "user_42",
          "label": {}
        }
      ]
    }
  ],
  "status": "active",
  "settings": {
    "tags": {
      "plan": "pro",
      "city": "Istanbul"
    },
    "submit_label": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    },
    "success_message": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    }
  }
}'

Form detayı

GET/v1/apps/{appId}/forms/{formId}Dene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
formIdyolstringEvet"frm_01JD3W5Q7X9K2M4N6P8R0T1V3W"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: Form

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
namestringEvet
statusenumEvetDeğerler: "active", "archived"
fieldsarray<object>EvetÖğe: 1–20
fields[].idstringEvet
fields[].typeenumEvetDeğerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent"
fields[].labelmap<string, string>Evet
fields[].placeholdermap<string, string>Hayır
fields[].requiredbooleanHayır
fields[].optionsarray<object>HayırÖğe: 0–30
fields[].options[].valuestringEvetUzunluk: 1–100
fields[].options[].labelmap<string, string>Evet
fields[].maps_tostringHayır
fields[].max_lengthintegerHayırAralık: 1–2000
fields[].policy_urlstring (url)HayırUzunluk: 0–2000
settingsobjectEvet
settings.submit_labelmap<string, string>Hayır
settings.success_messagemap<string, string>Hayır
settings.redirect_urlstring (url)HayırUzunluk: 0–2000
settings.tagsmap<string, string>Hayır
settings.subscribeobjectHayır
settings.subscribe.emailbooleanHayır
settings.subscribe.smsbooleanHayır
settings.double_opt_inobjectHayır
settings.double_opt_in.enabledbooleanEvet
settings.double_opt_in.subjectmap<string, string>Hayır
settings.double_opt_in.bodymap<string, string>Hayır
settings.event_namestringHayır
settings.captchabooleanHayır
settings.default_languagestringHayırUzunluk: 2–10
statsobjectEvet
stats.submissionsintegerEvet
stats.last_submission_atstring | nullEvet
created_atstringEvet
updated_atstringEvet

Örnek yanıt:

{
  "name": "Sipariş bildirimleri",
  "status": "active",
  "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "fields": [
    {
      "type": "email",
      "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "label": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "placeholder": {
        "tr": "Siparişiniz yola çıktı",
        "en": "Your order has shipped"
      },
      "required": true,
      "options": [
        {
          "value": "user_42",
          "label": {}
        }
      ],
      "maps_to": "değer"
    }
  ],
  "settings": {
    "tags": {
      "plan": "pro",
      "city": "Istanbul"
    },
    "submit_label": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    },
    "success_message": {
      "tr": "Siparişiniz yola çıktı",
      "en": "Your order has shipped"
    },
    "redirect_url": "https://example.com/orders/1001"
  },
  "stats": {
    "submissions": 1,
    "last_submission_at": "örnek"
  },
  "created_at": "örnek",
  "updated_at": "örnek"
}

Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).

Örnekler

curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms/frm_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Form gönderimleri

GET/v1/apps/{appId}/forms/{formId}/submissionsDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı — kapsam users:read (admin her kapsamı içerir).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
formIdyolstringEvet"frm_01JD3W5Q7X9K2M4N6P8R0T1V3W"
limitsorguintegerHayırVarsayılan: 50; Aralık: 1–20050
cursorsorgustringHayırUzunluk: 1–∞"eyJpZCI6Im1zZ18wMUpE…"
statussorguenumHayırDeğerler: "accepted", "pending_confirmation", "confirmed""accepted"
sincesorgustring (date-time)Hayır"2026-10-17T09:00:00Z"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: FormSubmissionPage

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].idstringEvet
data[].form_idstringEvet
data[].user_idstring | nullEvet
data[].subscription_idsarray<string>Evet
data[].sourceenumEvetDeğerler: "web_campaign", "landing_page", "sdk", "api"
data[].source_idstring | nullEvet
data[].statusenumEvetDeğerler: "accepted", "pending_confirmation", "confirmed"
data[].datamap<string, string | boolean | array<string>>Evet
data[].consentarray<object>Evet
data[].consent[].field_idstringEvet
data[].consent[].givenbooleanEvet
data[].consent[].textstringEvet
data[].consent[].text_hashstringEvet
data[].consent[].policy_urlstring | nullEvet
data[].consent[].languagestringEvet
data[].consent[].atstringEvet
data[].page_urlstring | nullEvet
data[].languagestring | nullEvet
data[].confirmed_atstring | nullEvet
data[].created_atstringEvet
next_cursorstring | nullEvet
has_morebooleanEvet

Örnek yanıt:

{
  "data": [
    {
      "data": {
        "order_id": "1001"
      },
      "status": "accepted",
      "id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "form_id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "subscription_ids": [
        "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"
      ],
      "source": "web_campaign",
      "source_id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "consent": [
        {
          "field_id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
          "given": true,
          "text": "Takip bağlantısı içeride",
          "text_hash": "örnek",
          "policy_url": "https://example.com/orders/1001",
          "language": "tr",
          "at": "örnek"
        }
      ],
      "page_url": "https://example.com/orders/1001",
      "language": "tr",
      "confirmed_at": "örnek",
      "created_at": "örnek"
    }
  ],
  "next_cursor": "eyJpZCI6Im1zZ18wMUpE…",
  "has_more": true
}

Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).

Örnekler

curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms/frm_01JD3W5Q7X9K2M4N6P8R0T1V3W/submissions?limit=50" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Sunucu tarafı form gönderimi (external_id verilirse o kullanıcının profili güncellenir)

POST/v1/apps/{appId}/forms/{formId}/submissionsDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı — kapsam users:write (admin her kapsamı içerir).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
formIdyolstringEvet"frm_01JD3W5Q7X9K2M4N6P8R0T1V3W"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: PublicFormSubmitDto

AlanTürZorunluAçıklama
valuesmap<string, string | boolean | number | array<string>>Evet
external_idstringHayırUzunluk: 1–128
page_urlstringHayırUzunluk: 0–2000
languagestringHayırUzunluk: 2–10

Örnek:

{
  "values": {
    "key": "user_42"
  },
  "external_id": "user_42",
  "page_url": "https://example.com/orders/1001",
  "language": "tr"
}

Yanıtlar

201 — Başarılı.

Şema: FormSubmitResult

AlanTürZorunluAçıklama
oktrueEvet
statusenumEvetDeğerler: "accepted", "pending_confirmation"
submission_idstring | nullEvet
success_messagestringEvet
redirect_urlstring | nullEvet

Örnek yanıt:

{
  "status": "accepted",
  "ok": true,
  "submission_id": "fsb_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "success_message": "örnek",
  "redirect_url": "https://example.com/orders/1001"
}

Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).

Örnekler

curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms/frm_01JD3W5Q7X9K2M4N6P8R0T1V3W/submissions" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "values": {
    "key": "user_42"
  },
  "external_id": "user_42",
  "page_url": "https://example.com/orders/1001",
  "language": "tr"
}'

Bu sayfada