Skip to content

Quickstart

Four requests: profile, connection, account and post.

Open the dashboard, go to Developers → API keys and create one. It is shown only once: keep it in an environment variable.

Ventana de terminal
export CRIER_API_KEY="crier_live_…"

A profile groups the accounts of one brand or one of your customers. Keep its id.

Ventana de terminal
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"
}'
201 Created
{
"data": {
"id": "prf_8f2k4d",
"name": "Acme",
"timezone": "Europe/Madrid",
"createdAt": "2026-10-23T10:00:00.000Z",
"updatedAt": "2026-10-23T10:00:00.000Z"
}
}

Ask for the network’s connect URL and open it in the user’s browser. Once they authorize, they come back to your redirectUrl.

Ventana de terminal
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"
Back in your app
https://app.acme.com/connected?connected=instagram&accountId=acc_3k9x2m&username=acme

Send the text and the accounts. Without scheduledFor it goes out right away.

Ventana de terminal
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"
}
]
}'
201 Created
{
"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