API referansı
Formlar
WhatsApp içinde açılan çok ekranlı formları (WhatsApp Flows) oluşturun, yayınlayın ve izleyin. Formlar WABA düzeyindedir; yönetim kredisizdir.
#Flow nesnesi
idstringForm kimliği;flow_idile aynı değer (yalnızGET /flowslistesinde).flow_idstringForm kimliği.namestring · boş olabilirForm adı.statusstring · boş olabilirDurum.Değerler:DRAFT,PUBLISHED,DEPRECATED,BLOCKED,THROTTLEDcategoriesarrayKategoriler.Değerler:SIGN_UP,SIGN_IN,APPOINTMENT_BOOKING,LEAD_GENERATION,CONTACT_US,CUSTOMER_SUPPORT,SURVEY,OTHERvalidation_errorsarrayMeta Flow JSON doğrulama hataları.health_statusobject · boş olabilirMeta sağlık durumu (can_send_messagevb.).json_versionstring · boş olabilirFlow JSON sürümü.data_api_versionstring · boş olabilirData API sürümü.endpoint_uristring · boş olabilirEndpoint adresi (data_exchange).waba_idstringFormun bağlı olduğu WABA (yalnızGET /flowslistesinde).phone_number_idstring · boş olabilirListeyi istediğiniz numara (yalnızGET /flowslistesinde).updated_atstring · boş olabilirVeri Merkezi kaydında formun son değişikliğinin gözlendiği zaman (ISO 8601, ofsetli). Meta form güncellenme zamanı vermez; ad, durum, kategori ya da doğrulama hataları değiştiğinde ilerler. Kayıt yazılamadıysanull(yalnızGET /flowslistesinde).
Flow nesnesi
{
"flow_id": "1234567890123456",
"name": "Kredi başvurusu",
"status": "PUBLISHED",
"categories": [
"LEAD_GENERATION"
],
"validation_errors": [],
"health_status": {
"can_send_message": "AVAILABLE"
},
"json_version": "7.2",
"data_api_version": null,
"endpoint_uri": null
}#Formları listele
GET
/flowsNumaranın WABA'sındaki formları döndürür. İmleçli sayfalama: yanıttaki
next_cursor değerini bir sonraki istekte cursor (ya da after) olarak gönderin; has_more: false olduğunda liste biter. Kapsam: flows:read2.26.0: her formda
id (= flow_id), waba_id, phone_number_id, updated_at; yanıtta next_cursor ve has_more (eski paging.after korunur, next_cursor ile aynıdır).Test anahtarı (
vmk_test_) bu uçta da Meta'daki gerçek listeyi okur (form okuma uçları test anahtarıyla çalışır; simülasyon yalnız yazma uçlarında 403 test_mode_unsupported biçimindedir).Sorgu parametreleri
phone_number_idstringzorunluNumaranızın Meta kimliği.limitintegeristeğe bağlıSayfa boyutu (1–200; 200'den büyük değer 200'e indirilir). Verilmezse Meta varsayılanı (25).afterstringisteğe bağlıSayfalama imleci (next_cursor).cursoradıyla da gönderilebilir.cursorstringisteğe bağlıafterile aynı; önceki yanıttakinext_cursordeğeri.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | insufficient_scope | Anahtarda flows:read kapsamı yok. |
| 404 | number_not_found | Numara size ait değil. |
| 409 | number_detached | Numara hesabınızdan ayrılmış; panelden yeniden bağlayın. |
| 422 | invalid_phone_number_id | phone_number_id zorunlu. |
| 422 | invalid_request | after / cursor geçersiz (field: after). |
curl -X GET "https://api.verimerkezi.app/wa/flows?phone_number_id=1234567890" \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch("https://api.verimerkezi.app/wa/flows?phone_number_id=1234567890", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
},
});
const data = await res.json();import os, requests
res = requests.get(
"https://api.verimerkezi.app/wa/flows?phone_number_id=1234567890",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows?phone_number_id=1234567890");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"ok": true,
"phone_number_id": "1234567890",
"waba_id": "1029384756",
"flows": [
{
"id": "1234567890123456",
"flow_id": "1234567890123456",
"name": "Kredi başvurusu",
"status": "PUBLISHED",
"categories": [
"LEAD_GENERATION"
],
"validation_errors": [],
"health_status": {
"can_send_message": "AVAILABLE"
},
"json_version": "7.2",
"data_api_version": null,
"endpoint_uri": null,
"waba_id": "1029384756",
"phone_number_id": "1234567890",
"updated_at": "2026-10-14T10:32:05+03:00"
}
],
"paging": {
"after": "QVFIUmxNQ2w0ZAFRB"
},
"next_cursor": "QVFIUmxNQ2w0ZAFRB",
"has_more": true
}#Form oluştur
POST
/flowsFormu verilen Flow JSON ile
DRAFT durumunda oluşturur. Meta doğrulama hataları validation_errors alanında döner. Kapsam: flows:writeŞifreli Endpoint (data_exchange) trafiğini Veri Merkezi karşılamaz; kendi sunucunuz karşılar.
Yayınlanmamış formu
POST /messages ile flow.mode: "draft" göndererek deneyebilirsiniz.Meta, Flow JSON'u koşul ifadesindeki tür uyuşmazlığıyla reddederse (
Type mismatch in an equality operation) yanıta hint ve Türkçe hint_message eklenir: başarılı yanıtta (validation_errors içinde) üst düzeyde, hata yanıtında (422 meta_flow_failed) error nesnesinde. hint: "flow_chained_equality" — tek ifadede birden fazla eşitlik var; hint: "crm_update_required" — istek bir Sigorta CRM hizmetine bağlı anahtardan geldi, CRM yazılımını güncelleyin. Flow JSON değiştirilmez.Meta koşul kuralları — If bileşeni
condition: == / != için iki taraf aynı türde olmalı; metin değişmezi tek tırnakla ('2'), sayı tırnaksız yazılır; >, >=, <, <= yalnız sayılarla; iç içe If en fazla 3 seviye (Meta: https://developers.facebook.com/docs/whatsapp/flows/reference/components#if). Canlı Meta testlerinde (14.10.2026) gözlenen ek kısıtlar: bir ifadede yalnız bir eşitlik kullanılabilir — (${form.x} == '2') || (${form.x} == '3') Meta derleyicisinde ((${form.x} == '2') || ${form.x}) == '3' olarak çözülüp reddedilir. Çalışan biçimler: tek karşılaştırma, ${form.bool} || (${form.x} == 'a'), sayısal (${form.n} > 2) || (${form.n} < 1). Birden çok değer için koşulu iç içe If'lere bölün (≤ 3 seviye) ya da her değere ayrı If yazın. Switch bileşeni aynı testlerde Cannot read property 'type' hatası verdi; şimdilik If tercih edin.Başlıklar
Idempotency-Keyisteğe bağlı8–128 karakterlik benzersiz anahtar (UUID önerilir). Aynı anahtar ve aynı gövdeyle yapılan tekrar, ilk yanıtıIdempotent-Replay: truebaşlığıyla döndürür. 24 saat saklanır.
İstek gövdesi
phone_number_idstringzorunluFormun WABA'sını belirleyen numara.namestringzorunluForm adı (en fazla 200).categoriesarrayzorunluEn az bir kategori.Değerler:SIGN_UP,SIGN_IN,APPOINTMENT_BOOKING,LEAD_GENERATION,CONTACT_US,CUSTOMER_SUPPORT,SURVEY,OTHERflow_jsonobject | stringzorunluFlow JSON nesnesi ya da metni (en fazla 10 MB).endpoint_uristringisteğe bağlıData exchange için kendihttpsuç noktanız.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | test_mode_unsupported | Yazma uçları test anahtarıyla çalışmaz. |
| 403 | insufficient_scope | Anahtarda flows:write kapsamı yok. |
| 404 | flow_not_found | Form yok ya da size ait değil. |
| 409 | number_detached | Numara hesabınızdan ayrılmış; panelden yeniden bağlayın. |
| 422 | invalid_flow_id | flow_id yalnız rakam olmalı. |
| 422 | meta_flow_failed | Meta isteği reddetti. Zincirlenmiş eşitlikte error.hint (flow_chained_equality | crm_update_required) ve error.hint_message eklenir. |
| 409 | idempotency_in_progress | Aynı anahtarla bir istek hâlâ işleniyor. Retry-After kadar bekleyin. |
| 422 | idempotency_key_conflict | Aynı anahtar farklı bir gövdeyle kullanılmış. |
| 422 | invalid_request | Parametre hatalı. |
| 422 | invalid_flow_json | Flow JSON geçersiz ya da 10 MB'ı aşıyor. |
| 409 | meta_outcome_unknown | Sonuç belirsiz; GET /flows ile kontrol edin. |
curl -X POST "https://api.verimerkezi.app/wa/flows" \
-H "Authorization: Bearer $VM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number_id": "1234567890",
"name": "Kredi başvurusu",
"categories": [
"LEAD_GENERATION"
],
"flow_json": {
"version": "7.2",
"screens": [
{
"id": "WELCOME",
"title": "Başvuru",
"terminal": true,
"layout": {
"type": "SingleColumnLayout",
"children": []
}
}
]
}
}'const res = await fetch("https://api.verimerkezi.app/wa/flows", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"phone_number_id": "1234567890",
"name": "Kredi başvurusu",
"categories": [
"LEAD_GENERATION"
],
"flow_json": {
"version": "7.2",
"screens": [
{
"id": "WELCOME",
"title": "Başvuru",
"terminal": true,
"layout": {
"type": "SingleColumnLayout",
"children": []
}
}
]
}
}),
});
const data = await res.json();import os, requests
res = requests.post(
"https://api.verimerkezi.app/wa/flows",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
json={
"phone_number_id": "1234567890",
"name": "Kredi başvurusu",
"categories": [
"LEAD_GENERATION"
],
"flow_json": {
"version": "7.2",
"screens": [
{
"id": "WELCOME",
"title": "Başvuru",
"terminal": True,
"layout": {
"type": "SingleColumnLayout",
"children": []
}
}
]
}
},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"phone_number_id" => "1234567890",
"name" => "Kredi başvurusu",
"categories" => [
"LEAD_GENERATION"
],
"flow_json" => [
"version" => "7.2",
"screens" => [
[
"id" => "WELCOME",
"title" => "Başvuru",
"terminal" => true,
"layout" => [
"type" => "SingleColumnLayout",
"children" => []
]
]
]
]
]),
]);
$data = json_decode(curl_exec($ch), true);Yanıt 201
{
"ok": true,
"flow_id": "1234567890123456",
"status": "DRAFT",
"validation_errors": []
}#Form ayrıntısını getir
GET
/flows/{flow_id}Formun durumunu, doğrulama hatalarını ve sağlık bilgisini döndürür. Kapsam:
flows:readYol parametreleri
flow_idstringzorunluForm kimliği (yalnız rakam).
Sorgu parametreleri
phone_number_idstringisteğe bağlıYalnız Meta arayüzünde oluşturulmuş formlar için; formu hesabınıza bağlar.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | insufficient_scope | Anahtarda flows:read kapsamı yok. |
| 404 | flow_not_found | Form yok ya da size ait değil. |
| 422 | invalid_flow_id | flow_id yalnız rakam olmalı. |
curl -X GET "https://api.verimerkezi.app/wa/flows/1234567890123456" \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch("https://api.verimerkezi.app/wa/flows/1234567890123456", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
},
});
const data = await res.json();import os, requests
res = requests.get(
"https://api.verimerkezi.app/wa/flows/1234567890123456",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows/1234567890123456");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"flow_id": "1234567890123456",
"name": "Kredi başvurusu",
"status": "PUBLISHED",
"categories": [
"LEAD_GENERATION"
],
"validation_errors": [],
"health_status": {
"can_send_message": "AVAILABLE"
},
"json_version": "7.2",
"data_api_version": null,
"endpoint_uri": null,
"ok": true
}#Form JSON'unu güncelle
PUT
/flows/{flow_id}/jsonTaslak formun Flow JSON'unu değiştirir. Yalnız
DRAFT formlarda çalışır. Kapsam: flows:writeMeta, Flow JSON'u koşul ifadesindeki tür uyuşmazlığıyla reddederse (
Type mismatch in an equality operation) yanıta hint ve Türkçe hint_message eklenir: başarılı yanıtta (validation_errors içinde) üst düzeyde, hata yanıtında (422 meta_flow_failed) error nesnesinde. hint: "flow_chained_equality" — tek ifadede birden fazla eşitlik var; hint: "crm_update_required" — istek bir Sigorta CRM hizmetine bağlı anahtardan geldi, CRM yazılımını güncelleyin. Flow JSON değiştirilmez.Yol parametreleri
flow_idstringzorunluForm kimliği (yalnız rakam).
Sorgu parametreleri
phone_number_idstringisteğe bağlıYalnız Meta arayüzünde oluşturulmuş formlar için; formu hesabınıza bağlar.
İstek gövdesi
flow_jsonobject | stringzorunluYeni Flow JSON.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | test_mode_unsupported | Yazma uçları test anahtarıyla çalışmaz. |
| 403 | insufficient_scope | Anahtarda flows:write kapsamı yok. |
| 404 | flow_not_found | Form yok ya da size ait değil. |
| 409 | number_detached | Numara hesabınızdan ayrılmış; panelden yeniden bağlayın. |
| 422 | invalid_flow_id | flow_id yalnız rakam olmalı. |
| 422 | meta_flow_failed | Meta isteği reddetti. Zincirlenmiş eşitlikte error.hint (flow_chained_equality | crm_update_required) ve error.hint_message eklenir. |
| 409 | flow_not_draft | Yalnız DRAFT formda güncellenebilir. |
| 422 | invalid_flow_json | Flow JSON geçersiz. |
curl -X PUT "https://api.verimerkezi.app/wa/flows/1234567890123456/json" \
-H "Authorization: Bearer $VM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"flow_json": {
"version": "7.2",
"screens": []
}
}'const res = await fetch("https://api.verimerkezi.app/wa/flows/1234567890123456/json", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"flow_json": {
"version": "7.2",
"screens": []
}
}),
});
const data = await res.json();import os, requests
res = requests.put(
"https://api.verimerkezi.app/wa/flows/1234567890123456/json",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
json={
"flow_json": {
"version": "7.2",
"screens": []
}
},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows/1234567890123456/json");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"flow_json" => [
"version" => "7.2",
"screens" => []
]
]),
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"ok": true,
"flow_id": "1234567890123456",
"validation_errors": [
{
"error": "INVALID_PROPERTY_VALUE",
"message": "Ekran listesi boş olamaz.",
"line_start": 1
}
]
}#Formu yayınla
POST
/flows/{flow_id}/publishFormu yayınlar. Yayınlanan form değiştirilemez; yeni sürüm için yeni form oluşturun. Kapsam:
flows:writeDoğrulama hatası olan form yayınlanamaz (
422 meta_flow_failed).Meta yayınlamayı koşul ifadesi nedeniyle reddederse
error.hint / error.hint_message döner (bkz. Form oluştur).Yol parametreleri
flow_idstringzorunluForm kimliği (yalnız rakam).
Sorgu parametreleri
phone_number_idstringisteğe bağlıYalnız Meta arayüzünde oluşturulmuş formlar için; formu hesabınıza bağlar.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | test_mode_unsupported | Yazma uçları test anahtarıyla çalışmaz. |
| 403 | insufficient_scope | Anahtarda flows:write kapsamı yok. |
| 404 | flow_not_found | Form yok ya da size ait değil. |
| 409 | number_detached | Numara hesabınızdan ayrılmış; panelden yeniden bağlayın. |
| 422 | invalid_flow_id | flow_id yalnız rakam olmalı. |
| 422 | meta_flow_failed | Meta isteği reddetti. Zincirlenmiş eşitlikte error.hint (flow_chained_equality | crm_update_required) ve error.hint_message eklenir. |
curl -X POST "https://api.verimerkezi.app/wa/flows/1234567890123456/publish" \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch("https://api.verimerkezi.app/wa/flows/1234567890123456/publish", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
},
});
const data = await res.json();import os, requests
res = requests.post(
"https://api.verimerkezi.app/wa/flows/1234567890123456/publish",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows/1234567890123456/publish");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"ok": true,
"flow_id": "1234567890123456",
"status": "PUBLISHED"
}#Formu kullanımdan kaldır
POST
/flows/{flow_id}/deprecateYayınlanmış formu kullanımdan kaldırır. Kapsam:
flows:writeYol parametreleri
flow_idstringzorunluForm kimliği (yalnız rakam).
Sorgu parametreleri
phone_number_idstringisteğe bağlıYalnız Meta arayüzünde oluşturulmuş formlar için; formu hesabınıza bağlar.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | test_mode_unsupported | Yazma uçları test anahtarıyla çalışmaz. |
| 403 | insufficient_scope | Anahtarda flows:write kapsamı yok. |
| 404 | flow_not_found | Form yok ya da size ait değil. |
| 409 | number_detached | Numara hesabınızdan ayrılmış; panelden yeniden bağlayın. |
| 422 | invalid_flow_id | flow_id yalnız rakam olmalı. |
| 422 | meta_flow_failed | Meta isteği reddetti. |
curl -X POST "https://api.verimerkezi.app/wa/flows/1234567890123456/deprecate" \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch("https://api.verimerkezi.app/wa/flows/1234567890123456/deprecate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
},
});
const data = await res.json();import os, requests
res = requests.post(
"https://api.verimerkezi.app/wa/flows/1234567890123456/deprecate",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows/1234567890123456/deprecate");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"ok": true,
"flow_id": "1234567890123456",
"status": "DEPRECATED"
}#Taslak formu sil
DELETE
/flows/{flow_id}Taslak formu siler. Yalnız
DRAFT formlarda çalışır. Kapsam: flows:writeYol parametreleri
flow_idstringzorunluForm kimliği (yalnız rakam).
Sorgu parametreleri
phone_number_idstringisteğe bağlıYalnız Meta arayüzünde oluşturulmuş formlar için; formu hesabınıza bağlar.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | test_mode_unsupported | Yazma uçları test anahtarıyla çalışmaz. |
| 403 | insufficient_scope | Anahtarda flows:write kapsamı yok. |
| 404 | flow_not_found | Form yok ya da size ait değil. |
| 409 | number_detached | Numara hesabınızdan ayrılmış; panelden yeniden bağlayın. |
| 422 | invalid_flow_id | flow_id yalnız rakam olmalı. |
| 422 | meta_flow_failed | Meta isteği reddetti. |
| 409 | flow_not_draft | Yalnız DRAFT form silinebilir. |
curl -X DELETE "https://api.verimerkezi.app/wa/flows/1234567890123456" \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch("https://api.verimerkezi.app/wa/flows/1234567890123456", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
},
});
const data = await res.json();import os, requests
res = requests.delete(
"https://api.verimerkezi.app/wa/flows/1234567890123456",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows/1234567890123456");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"ok": true,
"flow_id": "1234567890123456",
"deleted": true
}#Önizleme bağlantısı al
GET
/flows/{flow_id}/previewFormun Meta önizleme bağlantısını döndürür. Kapsam:
flows:readYol parametreleri
flow_idstringzorunluForm kimliği (yalnız rakam).
Sorgu parametreleri
invalidatebooleanisteğe bağlıtrueyeni bağlantı üretir.Varsayılan:Falsephone_number_idstringisteğe bağlıYalnız Meta arayüzünde oluşturulmuş formlar için; formu hesabınıza bağlar.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | insufficient_scope | Anahtarda flows:read kapsamı yok. |
| 404 | flow_not_found | Form bulunamadı. |
curl -X GET "https://api.verimerkezi.app/wa/flows/1234567890123456/preview" \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch("https://api.verimerkezi.app/wa/flows/1234567890123456/preview", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
},
});
const data = await res.json();import os, requests
res = requests.get(
"https://api.verimerkezi.app/wa/flows/1234567890123456/preview",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows/1234567890123456/preview");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"ok": true,
"flow_id": "1234567890123456",
"preview_url": "https://business.facebook.com/wa/manage/flows/1234567890123456/preview/?token=abc123",
"expires_at": "2026-11-09T10:00:00+0000"
}#Form metriklerini getir
GET
/flows/{flow_id}/metricsEndpoint'li formların Meta metriklerini aynen döndürür. Varsayılan aralık son 7 gündür. Kapsam:
flows:readYol parametreleri
flow_idstringzorunluForm kimliği (yalnız rakam).
Sorgu parametreleri
fromstringisteğe bağlıBaşlangıç (YYYY-AA-GG); varsayılanto− 6 gün.tostringisteğe bağlıBitiş (YYYY-AA-GG); varsayılan bugün.metricstringisteğe bağlıMetrik.Değerler:ENDPOINT_REQUEST_COUNT,ENDPOINT_REQUEST_ERROR,ENDPOINT_REQUEST_ERROR_RATE,ENDPOINT_REQUEST_LATENCY_SECONDS_CEIL,ENDPOINT_AVAILABILITYVarsayılan:ENDPOINT_REQUEST_COUNTgranularitystringisteğe bağlıAyrıntı.Değerler:DAY,HOUR,LIFETIMEVarsayılan:DAYphone_number_idstringisteğe bağlıYalnız Meta arayüzünde oluşturulmuş formlar için; formu hesabınıza bağlar.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
| 403 | insufficient_scope | Anahtarda flows:read kapsamı yok. |
| 404 | flow_not_found | Form bulunamadı. |
curl -X GET "https://api.verimerkezi.app/wa/flows/1234567890123456/metrics" \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch("https://api.verimerkezi.app/wa/flows/1234567890123456/metrics", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
},
});
const data = await res.json();import os, requests
res = requests.get(
"https://api.verimerkezi.app/wa/flows/1234567890123456/metrics",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
data = res.json()<?php
$ch = curl_init("https://api.verimerkezi.app/wa/flows/1234567890123456/metrics");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("VM_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);Yanıt 200
{
"ok": true,
"flow_id": "1234567890123456",
"from": "2026-10-01",
"to": "2026-10-07",
"metric": {
"name": "ENDPOINT_REQUEST_COUNT",
"granularity": "DAY",
"data_points": []
}
}