Recevez chaque nouvelle entrée bloo.Cards dans vos systèmes.
Une API en lecture seule et des webhooks signés pour brancher vos contacts, scans et formulaires sur vos outils. Simple, sûr, hébergé dans l'UE.
Envoi uniquement · lecture seule · hébergé dans l'UE
Trois secrets, trois rôles
| Secret | Rôle | Notes |
|---|---|---|
bc_live_… | Clé API : identifie votre société, en lecture seule | Créée dans la section Développeurs. Affichée une seule fois, empreinte SHA-256 stockée, révocable. |
whsec_… | Secret de signature des webhooks | Sert à vérifier que le webhook vient bien de bloo.Cards (HMAC-SHA256). |
| Identifiants CRM | Conservés chiffrés, jamais réaffichés | Chiffrement par organisation (BlooCrypto). Utilisés seulement pour l'envoi sortant vers votre CRM. |
L'API /v1 Accès anticipé
Base : https://bloo.cards/v1 · Authentification : en-tête Authorization: Bearer bc_live_… (jamais dans l'URL).
| Méthode | Rôle |
|---|---|
GET /v1/me | Société et périmètre de la clé (test de connexion) |
GET /v1/contacts?since=… | Nouveaux contacts depuis un instant (ISO 8601) |
GET /v1/hooks | Liste de vos abonnements webhook |
POST /v1/hooks | Créer un abonnement { url, events[] } (renvoie le secret une fois) |
DELETE /v1/hooks/{id} | Désactiver un abonnement |
Exemple — tester la connexion
curl -H "Authorization: Bearer bc_live_xxx" \
https://bloo.cards/v1/me
$ch = curl_init('https://bloo.cards/v1/me');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer bc_live_xxx'],
CURLOPT_RETURNTRANSFER => true,
]);
$me = json_decode(curl_exec($ch), true);
const r = await fetch('https://bloo.cards/v1/me', {
headers: { Authorization: 'Bearer bc_live_xxx' }
});
const me = await r.json();
import requests
r = requests.get(
'https://bloo.cards/v1/me',
headers={'Authorization': 'Bearer bc_live_xxx'})
me = r.json()
Webhooks Accès anticipé
Abonnez une URL à des événements ; bloo.Cards y envoie un POST signé à chaque occurrence, avec relances en cas d'échec.
Événements
contact.exchanged · lead.ocr_scanned · form.submitted · booking.requested · contact.deleted
Enveloppe reçue
POST https://votre-serveur.example/bloo-webhook
X-Bloo-Signature: t=1790456846,v1=9f2b…c3
{
"id": "evt_ab12cd34",
"type": "contact.exchanged",
"created_at": "2026-09-26T21:00:00Z",
"data": {
"contact": {
"first_name": "Marie", "last_name": "Dupont",
"email": "marie@exemple.be", "company": "Exemple SA",
"job_title": "Directrice", "source": "exchange",
"context": "Salon de Bruxelles"
}
}
}
Vérifier la signature (PHP)
$body = file_get_contents('php://input');
$header = $_SERVER['HTTP_X_BLOO_SIGNATURE'] ?? ''; // t=…,v1=…
parse_str(strtr($header, ',', '&'), $p);
$expected = hash_hmac('sha256', $p['t'] . '.' . $body, $whsec);
if (!hash_equals($expected, $p['v1'] ?? '')) {
http_response_code(401); exit; // signature invalide
}
// OK : traitez $body (JSON)
Les données publiques des cartes
Les cartes publiques exposent déjà leurs données en JSON-LD et via ?format=json, sans authentification. Idéal pour les agents et l'indexation. Voir bloo.Cards pour les IA.
Prêt à brancher bloo.Cards ?
Créez votre clé dans la section Développeurs de votre compte, ou demandez un accès anticipé. Voir les automatisations.
Créer ma clé API