Penjadwalan dan publikasi
Perbarui draf ruang kerja
Ganti seluruh konten bersama yang dapat diedit dengan id, expected_revision yang terakhir dibaca, mutation_id baru, dan content. Memerlukan peran editor atau lebih tinggi serta akses operate. Konten dari editor bersama tidak tepercaya dan dibatasi: simpan masukan asli secara lengkap atau gunakan komposer Web; jangan pernah mengirim kembali teks [truncated]. Konflik 409 mempertahankan versi tersimpan: pertahankan edit lokal dan tinjau revisi terbaru alih-alih menimpa editor lain. Penyimpanan tidak pernah memublikasikan dan tidak dapat mengganti draf yang dibekukan atau sudah diajukan.
POST /studio-api/content-drafts/updateKontrak ditinjau: · sha256:75c8b8ebce408575
Ringkasan
Ganti seluruh konten bersama yang dapat diedit dengan id, expected_revision yang terakhir dibaca, mutation_id baru, dan content. Memerlukan peran editor atau lebih tinggi serta akses operate. Konten dari editor bersama tidak tepercaya dan dibatasi: simpan masukan asli secara lengkap atau gunakan komposer Web; jangan pernah mengirim kembali teks [truncated]. Konflik 409 mempertahankan versi tersimpan: pertahankan edit lokal dan tinjau revisi terbaru alih-alih menimpa editor lain. Penyimpanan tidak pernah memublikasikan dan tidak dapat mengganti draf yang dibekukan atau sudah diajukan.
Respons HTTP berhasil dapat berarti permintaan diterima, bukan selesai. Untuk pekerjaan latar belakang, simpan ID yang dikembalikan dan periksa operasi yang sama sampai selesai. Postingan terjadwal atau diterima baru dipublikasikan setelah platform mengonfirmasi; timeout klien tidak membuktikan hasilnya.
Autentikasi dan izin
Token hanya dapat menggunakan hak pemiliknya. Setiap permintaan memeriksa keanggotaan ruang kerja, kepemilikan sumber daya, ruang kerja terpilih, dan kemampuan yang diberikan. Profil core dan full mengubah alat yang ditampilkan; tidak memberikan akses.
Kolom permintaan
Wajib berarti wajib dalam objek induk dan cabang yang dipilih. Anak wajib tidak membuat induk opsional menjadi wajib. Aturan dan nama kolom di bawah disalin dari kontrak.
| Kolom / cabang | Jenis / wajib | Batasan |
|---|---|---|
$ | objectWajib dalam induk |
|
id | stringWajib dalam induk |
|
expected_revision | integerWajib dalam induk |
|
mutation_id | stringWajib dalam induk |
|
content | objectWajib dalam induk |
|
content.schemaVersion | numberOpsional / item |
|
content.accountIds | arrayOpsional / item |
|
content.accountIds[] | stringOpsional / item |
|
content.caption | stringOpsional / item |
|
content.hashtags | stringOpsional / item |
|
content.assetIds | arrayOpsional / item |
|
content.assetIds[] | stringOpsional / item |
|
content.threadsTextOnly | booleanOpsional / item |
|
content.instagramMode | stringOpsional / item |
|
content.youtubeTitle | stringOpsional / item |
|
content.youtubePrivacy | stringOpsional / item |
|
content.youtubeSynthetic | booleanOpsional / item |
|
content.youtubeCategoryId | stringOpsional / item |
|
content.youtubeShort | booleanOpsional / item |
|
content.linkUrl | stringOpsional / item |
|
content.scheduledAt | stringOpsional / item |
|
content.displayTimezone | stringOpsional / item |
|
content.publishNow | booleanOpsional / item |
|
content.destinationOverrides | objectOpsional / item |
|
content.destinationOverrides.* | objectOpsional / item |
|
content.destinationOverrides.*.caption | stringOpsional / item |
|
content.destinationOverrides.*.scheduledAt | stringOpsional / item |
|
content.expiresAt | stringOpsional / item |
|
JSON Schema lengkap
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expected_revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"mutation_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"content": {
"type": "object",
"properties": {
"schemaVersion": {
"default": 1,
"type": "number",
"const": 1
},
"accountIds": {
"default": [],
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"caption": {
"default": "",
"type": "string",
"maxLength": 5000
},
"hashtags": {
"default": "",
"type": "string",
"maxLength": 5000
},
"assetIds": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 16,
"pattern": "^[1-9][0-9]*$"
}
},
"threadsTextOnly": {
"default": false,
"type": "boolean"
},
"instagramMode": {
"default": "REELS",
"type": "string",
"enum": [
"IMAGE",
"REELS",
"CAROUSEL",
"STORY_IMAGE",
"STORY_VIDEO"
]
},
"youtubeTitle": {
"default": "",
"type": "string",
"maxLength": 100
},
"youtubePrivacy": {
"default": "private",
"type": "string",
"enum": [
"private",
"unlisted",
"public"
]
},
"youtubeSynthetic": {
"default": false,
"type": "boolean"
},
"youtubeCategoryId": {
"default": "",
"type": "string",
"maxLength": 32
},
"youtubeShort": {
"default": false,
"type": "boolean"
},
"linkUrl": {
"default": "",
"type": "string",
"maxLength": 2048
},
"scheduledAt": {
"default": "",
"type": "string",
"maxLength": 64
},
"displayTimezone": {
"default": "UTC",
"type": "string",
"minLength": 1,
"maxLength": 128
},
"publishNow": {
"default": false,
"type": "boolean"
},
"destinationOverrides": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"additionalProperties": {
"type": "object",
"properties": {
"caption": {
"type": "string",
"maxLength": 5000
},
"scheduledAt": {
"type": "string",
"maxLength": 64
}
},
"additionalProperties": false
}
},
"expiresAt": {
"default": "",
"type": "string",
"maxLength": 64
}
},
"additionalProperties": false
}
},
"required": [
"id",
"expected_revision",
"mutation_id",
"content"
],
"additionalProperties": false
}Respons dan penyelesaian
Status HTTP berhasil: 200. Saat operasi selesai: durable Workspace editorial content; no publishing side effects.
Respons HTTP berhasil dapat berarti permintaan diterima, bukan selesai. Untuk pekerjaan latar belakang, simpan ID yang dikembalikan dan periksa operasi yang sama sampai selesai. Postingan terjadwal atau diterima baru dipublikasikan setelah platform mengonfirmasi; timeout klien tidak membuktikan hasilnya.
Wajib berarti wajib dalam objek induk dan cabang yang dipilih. Anak wajib tidak membuat induk opsional menjadi wajib. Aturan dan nama kolom di bawah disalin dari kontrak.
| Kolom / cabang | Jenis / wajib | Batasan |
|---|---|---|
$ | objectWajib dalam induk | — |
draft | objectWajib dalam induk | — |
draft.id | stringWajib dalam induk |
|
draft.workspace_id | stringWajib dalam induk |
|
draft.revision | integerWajib dalam induk |
|
draft.state | stringWajib dalam induk |
|
draft.content | objectWajib dalam induk | — |
draft.content.schemaVersion | numberWajib dalam induk |
|
draft.content.accountIds | arrayWajib dalam induk |
|
draft.content.accountIds[] | stringOpsional / item |
|
draft.content.caption | stringWajib dalam induk |
|
draft.content.hashtags | stringWajib dalam induk |
|
draft.content.assetIds | arrayWajib dalam induk |
|
draft.content.assetIds[] | stringOpsional / item |
|
draft.content.threadsTextOnly | booleanWajib dalam induk |
|
draft.content.instagramMode | stringWajib dalam induk |
|
draft.content.youtubeTitle | stringWajib dalam induk |
|
draft.content.youtubePrivacy | stringWajib dalam induk |
|
draft.content.youtubeSynthetic | booleanWajib dalam induk |
|
draft.content.youtubeCategoryId | stringWajib dalam induk |
|
draft.content.youtubeShort | booleanWajib dalam induk |
|
draft.content.linkUrl | stringWajib dalam induk |
|
draft.content.scheduledAt | stringWajib dalam induk |
|
draft.content.displayTimezone | stringWajib dalam induk |
|
draft.content.publishNow | booleanWajib dalam induk |
|
draft.content.destinationOverrides | objectWajib dalam induk |
|
draft.content.destinationOverrides.* | objectOpsional / item | — |
draft.content.destinationOverrides.*.caption | stringOpsional / item |
|
draft.content.destinationOverrides.*.scheduledAt | stringOpsional / item |
|
draft.content.expiresAt | stringWajib dalam induk |
|
draft.created_by | string | nullWajib dalam induk | — |
draft.created_byanyOf 1 | stringWajib dalam induk |
|
draft.created_byanyOf 2 | nullWajib dalam induk | — |
draft.updated_by | string | nullWajib dalam induk | — |
draft.updated_byanyOf 1 | stringWajib dalam induk |
|
draft.updated_byanyOf 2 | nullWajib dalam induk | — |
draft.created_at | stringWajib dalam induk |
|
draft.updated_at | stringWajib dalam induk |
|
draft.submission | object | nullWajib dalam induk | — |
draft.submissionanyOf 1 | objectWajib dalam induk | — |
draft.submission.idanyOf 1 | stringWajib dalam induk |
|
draft.submission.expected_revisionanyOf 1 | integerWajib dalam induk |
|
draft.submission.started_atanyOf 1 | stringWajib dalam induk |
|
draft.submission.receiptanyOf 1 | object | nullWajib dalam induk | — |
draft.submission.receiptanyOf 1 / anyOf 1 | objectWajib dalam induk | — |
draft.submission.receipt.batch_idanyOf 1 / anyOf 1 | string | nullWajib dalam induk | — |
draft.submission.receipt.batch_idanyOf 1 / anyOf 1 / anyOf 1 | stringWajib dalam induk |
|
draft.submission.receipt.batch_idanyOf 1 / anyOf 1 / anyOf 2 | nullWajib dalam induk | — |
draft.submission.receipt.successesanyOf 1 / anyOf 1 | arrayWajib dalam induk |
|
draft.submission.receipt.successes[]anyOf 1 / anyOf 1 | objectOpsional / item | — |
draft.submission.receipt.successes[].social_account_idanyOf 1 / anyOf 1 | stringWajib dalam induk |
|
draft.submission.receipt.successes[].post_idanyOf 1 / anyOf 1 | stringWajib dalam induk |
|
draft.submission.receipt.failuresanyOf 1 / anyOf 1 | arrayWajib dalam induk |
|
draft.submission.receipt.failures[]anyOf 1 / anyOf 1 | objectOpsional / item | — |
draft.submission.receipt.failures[].social_account_idanyOf 1 / anyOf 1 | stringWajib dalam induk |
|
draft.submission.receipt.failures[].codeanyOf 1 / anyOf 1 | stringWajib dalam induk |
|
draft.submission.receipt.failures[].messageanyOf 1 / anyOf 1 | stringWajib dalam induk |
|
draft.submission.receiptanyOf 1 / anyOf 2 | nullWajib dalam induk | — |
draft.submissionanyOf 2 | nullWajib dalam induk | — |
replayed | booleanWajib dalam induk | — |
JSON Schema lengkap
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"draft": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"workspace_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"state": {
"type": "string",
"enum": [
"draft",
"submitting",
"submitted"
]
},
"content": {
"type": "object",
"properties": {
"schemaVersion": {
"default": 1,
"type": "number",
"const": 1
},
"accountIds": {
"default": [],
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"caption": {
"default": "",
"type": "string",
"maxLength": 5000
},
"hashtags": {
"default": "",
"type": "string",
"maxLength": 5000
},
"assetIds": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 16,
"pattern": "^[1-9][0-9]*$"
}
},
"threadsTextOnly": {
"default": false,
"type": "boolean"
},
"instagramMode": {
"default": "REELS",
"type": "string",
"enum": [
"IMAGE",
"REELS",
"CAROUSEL",
"STORY_IMAGE",
"STORY_VIDEO"
]
},
"youtubeTitle": {
"default": "",
"type": "string",
"maxLength": 100
},
"youtubePrivacy": {
"default": "private",
"type": "string",
"enum": [
"private",
"unlisted",
"public"
]
},
"youtubeSynthetic": {
"default": false,
"type": "boolean"
},
"youtubeCategoryId": {
"default": "",
"type": "string",
"maxLength": 32
},
"youtubeShort": {
"default": false,
"type": "boolean"
},
"linkUrl": {
"default": "",
"type": "string",
"maxLength": 2048
},
"scheduledAt": {
"default": "",
"type": "string",
"maxLength": 64
},
"displayTimezone": {
"default": "UTC",
"type": "string",
"minLength": 1,
"maxLength": 128
},
"publishNow": {
"default": false,
"type": "boolean"
},
"destinationOverrides": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"additionalProperties": {
"type": "object",
"properties": {
"caption": {
"type": "string",
"maxLength": 5000
},
"scheduledAt": {
"type": "string",
"maxLength": 64
}
}
}
},
"expiresAt": {
"default": "",
"type": "string",
"maxLength": 64
}
},
"required": [
"schemaVersion",
"accountIds",
"caption",
"hashtags",
"assetIds",
"threadsTextOnly",
"instagramMode",
"youtubeTitle",
"youtubePrivacy",
"youtubeSynthetic",
"youtubeCategoryId",
"youtubeShort",
"linkUrl",
"scheduledAt",
"displayTimezone",
"publishNow",
"destinationOverrides",
"expiresAt"
]
},
"created_by": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"updated_by": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"updated_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"submission": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expected_revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"started_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"receipt": {
"anyOf": [
{
"type": "object",
"properties": {
"batch_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"successes": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"social_account_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"post_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
}
},
"required": [
"social_account_id",
"post_id"
]
}
},
"failures": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"social_account_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"message": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"social_account_id",
"code",
"message"
]
}
}
},
"required": [
"batch_id",
"successes",
"failures"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"expected_revision",
"started_at",
"receipt"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"workspace_id",
"revision",
"state",
"content",
"created_by",
"updated_by",
"created_at",
"updated_at",
"submission"
]
},
"replayed": {
"type": "boolean"
}
},
"required": [
"draft",
"replayed"
]
}Kesalahan dan percobaan ulang aman
Periksa status HTTP dan isi respons. Kesalahan validasi 400 mungkin berisi ZodError; kesalahan handler menggunakan kolom error, message, dan code. Simpan request_id atau x-request-id untuk diagnosis, tanpa kredensial. Atasi kesalahan akses 401/403 sebelum mencoba lagi, dan ikuti Retry-After untuk 429. Jika penulisan belum pasti atau mengembalikan 5xx, baca hasil yang sudah ada terlebih dahulu. Gunakan kembali kunci idempotensi hanya jika didukung; perilaku percobaan ulang berbeda menurut operasi dan tidak menjamin pengiriman tepat satu kali.
Panduan pemecahan masalahContoh
Contoh ini menggunakan nilai fiktif yang diperiksa terhadap skema. Ganti ID dengan yang diizinkan bagi Anda, media dengan aset siap, dan tanggal dengan waktu publikasi yang dikonfirmasi. Periksa kelayakan akun sebelum mengirim penulisan. Halaman ini tidak mengirim permintaan API.
Atur SOSOAPI_ACCESS_TOKEN di server Anda ke kredensial yang diterima operasi ini, dan jauhkan dari kode browser. Untuk agen, gunakan sosoapi auth login untuk masuk melalui browser dan biarkan CLI memperbarui kredensialnya.
request.json
{
"id": "44444444-4444-4444-8444-444444444444",
"expected_revision": 1,
"mutation_id": "66666666-6666-4666-8666-666666666666",
"content": {
"schemaVersion": 1,
"accountIds": [],
"caption": "Revised editorial content, still not scheduled.",
"hashtags": "",
"assetIds": [],
"threadsTextOnly": false,
"instagramMode": "REELS",
"youtubeTitle": "",
"youtubePrivacy": "private",
"youtubeSynthetic": false,
"youtubeCategoryId": "",
"youtubeShort": false,
"linkUrl": "",
"scheduledAt": "",
"displayTimezone": "UTC",
"publishNow": false,
"destinationOverrides": {},
"expiresAt": ""
}
}cURL
curl --request POST \
"https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/content-drafts/update" \
-H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @request.jsonJavaScript
// Server-side JavaScript. Do not print tokens or credential-bearing responses.
const token = process.env.SOSOAPI_ACCESS_TOKEN;
if (!token) throw new Error("Set an accepted credential for this operation");
const response = await fetch("https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/content-drafts/update", {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
body: JSON.stringify({
"id": "44444444-4444-4444-8444-444444444444",
"expected_revision": 1,
"mutation_id": "66666666-6666-4666-8666-666666666666",
"content": {
"schemaVersion": 1,
"accountIds": [],
"caption": "Revised editorial content, still not scheduled.",
"hashtags": "",
"assetIds": [],
"threadsTextOnly": false,
"instagramMode": "REELS",
"youtubeTitle": "",
"youtubePrivacy": "private",
"youtubeSynthetic": false,
"youtubeCategoryId": "",
"youtubeShort": false,
"linkUrl": "",
"scheduledAt": "",
"displayTimezone": "UTC",
"publishNow": false,
"destinationOverrides": {},
"expiresAt": ""
}
})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.CLI
npx sosoapi api post /studio-api/content-drafts/update < request.jsonContoh respons sintetis
{
"draft": {
"id": "44444444-4444-4444-8444-444444444444",
"workspace_id": "11111111-1111-4111-8111-111111111111",
"revision": 2,
"state": "draft",
"content": {
"schemaVersion": 1,
"accountIds": [],
"caption": "Revised editorial content, still not scheduled.",
"hashtags": "",
"assetIds": [],
"threadsTextOnly": false,
"instagramMode": "REELS",
"youtubeTitle": "",
"youtubePrivacy": "private",
"youtubeSynthetic": false,
"youtubeCategoryId": "",
"youtubeShort": false,
"linkUrl": "",
"scheduledAt": "",
"displayTimezone": "UTC",
"publishNow": false,
"destinationOverrides": {},
"expiresAt": ""
},
"created_by": null,
"updated_by": null,
"created_at": "2099-01-15T08:00:00Z",
"updated_at": "2099-01-15T08:30:00Z",
"submission": null
},
"replayed": false
}