Quickstart
Four requests: profile, connection, account and post.
1. Get your API key
Section titled “1. Get your API key”Open the dashboard, go to Developers → API keys and create one. It is shown only once: keep it in an environment variable.
export CRIER_API_KEY="crier_live_…"2. Create a profile
Section titled “2. Create a profile”A profile groups the accounts of one brand or one of your customers. Keep its id.
curl -X POST "https://api.usecrier.com/v1/profiles" \ -H "Authorization: Bearer $CRIER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme", "timezone": "Europe/Madrid" }'const res = await fetch('https://api.usecrier.com/v1/profiles', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "name": "Acme", "timezone": "Europe/Madrid" }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/profiles", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"}, json={ "name": "Acme", "timezone": "Europe/Madrid" },)data = res.json()["data"]{ "data": { "id": "prf_8f2k4d", "name": "Acme", "timezone": "Europe/Madrid", "createdAt": "2026-10-23T10:00:00.000Z", "updatedAt": "2026-10-23T10:00:00.000Z" }}3. Connect an account
Section titled “3. Connect an account”Ask for the network’s connect URL and open it in the user’s browser. Once they authorize, they come back to your redirectUrl.
curl "https://api.usecrier.com/v1/connect/instagram?profileId=prf_8f2k4d&redirectUrl=https%3A%2F%2Fapp.acme.com%2Fconnected" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/connect/instagram?profileId=prf_8f2k4d&redirectUrl=https%3A%2F%2Fapp.acme.com%2Fconnected', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/connect/instagram?profileId=prf_8f2k4d&redirectUrl=https%3A%2F%2Fapp.acme.com%2Fconnected", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]https://app.acme.com/connected?connected=instagram&accountId=acc_3k9x2m&username=acme4. Post
Section titled “4. Post”Send the text and the accounts. Without scheduledFor it goes out right away.
curl -X POST "https://api.usecrier.com/v1/posts" \ -H "Authorization: Bearer $CRIER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "content": "Hello from Crier! 👋", "targets": [ { "accountId": "acc_3k9x2m" } ] }'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": "Hello from Crier! 👋", "targets": [ { "accountId": "acc_3k9x2m" } ] }),});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": "Hello from Crier! 👋", "targets": [ { "accountId": "acc_3k9x2m" } ] },)data = res.json()["data"]{ "data": { "id": "pst_7q1w0e", "status": "publishing", "targets": [ { "accountId": "acc_3k9x2m", "platform": "instagram", "status": "pending" } ] }}A few seconds later the post turns published and each target carries its url. Check it with GET /v1/posts/{id} or, better, with a webhook.
© 2026 Crier by TWOFACES ·usecrier.com ·Dashboard ·soporte@twofacesco.com