Post approval
With approval, a post stays pending_approval until an owner or admin of the team approves or rejects it. While it waits it does not go out, even when its time comes.
When it is asked for
Section titled “When it is asked for”- For the whole team: turn on
requireApprovalin the workspace (in the dashboard, Settings → Team). From then on, members’ posts wait for approval. - For one post: send
requiresApproval: truewhen creating it. Useful if your product lets your customers review what you publish for them.
curl -X POST "https://api.usecrier.com/v1/posts" \ -H "Authorization: Bearer $CRIER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "content": "Giveaway: two concert tickets 🎶", "targets": [ { "accountId": "acc_3k9x2m" } ], "scheduledFor": "2026-11-05T10:00:00+01:00", "requiresApproval": true }'const res = await fetch('https://api.usecrier.com/v1/posts', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "content": "Giveaway: two concert tickets 🎶", "targets": [ { "accountId": "acc_3k9x2m" } ], "scheduledFor": "2026-11-05T10:00:00+01:00", "requiresApproval": true }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/posts", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"}, json={ "content": "Giveaway: two concert tickets 🎶", "targets": [ { "accountId": "acc_3k9x2m" } ], "scheduledFor": "2026-11-05T10:00:00+01:00", "requiresApproval": True },)data = res.json()["data"]Approve or reject
Section titled “Approve or reject”curl -X POST "https://api.usecrier.com/v1/posts/pst_7q1w0e/review" \ -H "Authorization: Bearer $CRIER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "decision": "reject", "note": "The concert date is missing from the text." }'const res = await fetch('https://api.usecrier.com/v1/posts/pst_7q1w0e/review', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "decision": "reject", "note": "The concert date is missing from the text." }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/posts/pst_7q1w0e/review", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"}, json={ "decision": "reject", "note": "The concert date is missing from the text." },)data = res.json()["data"]approve: schedules it for its date, sends it to the queue, or publishes it now if its date has passed.reject: returns it to draft with the note inapproval.note, so whoever wrote it can fix it.
Rejecting fires the post.rejected webhook.
© 2026 Crier by TWOFACES ·usecrier.com ·Dashboard ·soporte@twofacesco.com