Conectar cuentas
Tus usuarios conectan sus redes desde tu app, con tu marca. Nunca ven las credenciales ni tú tienes que guardar tokens.
El flujo
- Tu servidor pide
GET /v1/connect/{platform}con elprofileIdy laredirectUrlde tu app. - Rediriges al usuario a la
urlque devuelve. Autoriza la red con su cuenta. - Crier le devuelve a tu
redirectUrlcon el resultado en la query.
curl "https://api.usecrier.com/v1/connect/linkedin?profileId=prf_8f2k4d&redirectUrl=https%3A%2F%2Fapp.acme.com%2Fconectado" \
-H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/connect/linkedin?profileId=prf_8f2k4d&redirectUrl=https%3A%2F%2Fapp.acme.com%2Fconectado', {
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/linkedin?profileId=prf_8f2k4d&redirectUrl=https%3A%2F%2Fapp.acme.com%2Fconectado",
headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},
)
data = res.json()["data"]Qué llega a tu redirectUrl
| Resultado | Parámetros |
|---|---|
| Conectada | connected=<platform>, accountId=acc_… y, si la red lo da, username |
| Falta elegir | select=<sessionId> y platform. Mira el paso siguiente. |
| Error | error=<código>, platform, error_message e is_user_fixable (true si el usuario puede reintentarlo) |
Elegir página, organización o tablero
Algunas redes conectan algo concreto dentro de la cuenta del usuario. Entonces vuelve con select y tu app enseña la lista para que elija:
| Red | Qué se elige |
|---|---|
| La página | |
| Su perfil personal o una organización que administra | |
| El tablero por defecto | |
| Google Business | La ficha (ubicación) |
| Snapchat | El perfil público |
Lista las opciones
curl "https://api.usecrier.com/v1/connect/sessions/cs_5t2y8u/options" \
-H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/connect/sessions/cs_5t2y8u/options', {
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/sessions/cs_5t2y8u/options",
headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},
)
data = res.json()["data"]{
"data": {
"platform": "facebook",
"options": [
{ "id": "1042…", "name": "Acme Store", "detail": "@acmestore" },
{ "id": "2210…", "name": "Acme Outlet", "detail": "Tienda de ropa" }
]
}
}Envía la elegida
curl -X POST "https://api.usecrier.com/v1/connect/sessions/cs_5t2y8u/select" \
-H "Authorization: Bearer $CRIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"optionId": "1042…"
}'const res = await fetch('https://api.usecrier.com/v1/connect/sessions/cs_5t2y8u/select', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CRIER_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"optionId": "1042…"
}),
});
const { data } = await res.json();import os, requests
res = requests.post(
"https://api.usecrier.com/v1/connect/sessions/cs_5t2y8u/select",
headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},
json={
"optionId": "1042…"
},
)
data = res.json()["data"]Devuelve la cuenta conectada (201). La sesión caduca a la hora.
Redes disponibles
instagram, facebook, tiktok, youtube, linkedin, x, threads, bluesky, pinterest, reddit, google-business, telegram, discord y snapchat.
Listar y vigilar cuentas
curl "https://api.usecrier.com/v1/accounts?profileId=prf_8f2k4d" \
-H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/accounts?profileId=prf_8f2k4d', {
headers: {
Authorization: `Bearer ${process.env.CRIER_API_KEY}`,
},
});
const { data } = await res.json();import os, requests
res = requests.get(
"https://api.usecrier.com/v1/accounts?profileId=prf_8f2k4d",
headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},
)
data = res.json()["data"]Cada cuenta tiene un status: active, needs_reconnection (el token caducó o el usuario quitó permisos) o disconnected. Para comprobar en el momento si pueden publicar, usa GET /v1/accounts/health. Si una cuenta pide reconexión, repite el flujo con la misma red y perfil.