Coter
Obtenez la prime d'un envoi à partir de sa valeur déclarée, sans créer de couverture.
La souscription en ligne ouvre bientôtLa souscription en ligne ouvre bientôt. Le calcul du prix et la vérification d’éligibilité sont déjà disponibles. En savoir plus
Coter, vérifier l'éligibilité, souscrire et suivre un sinistre depuis votre propre système. REST, JSON, une clé, rien d'autre à installer.
Obtenez la prime d'un envoi à partir de sa valeur déclarée, sans créer de couverture.
Le même appel vous dit si le contenu et le transporteur choisis sont assurables. Le contrôle se fait avant le paiement, pas après.
Créez la couverture, récupérez l'attestation et la facture.
Ouvrez un dossier de sinistre, déposez les pièces, suivez son avancement jusqu'au versement.
Une clé de test et une clé de production.
Un appel, vous obtenez la prime, la franchise et le verdict d'éligibilité.
Un second appel crée la couverture et renvoie l'attestation.
curl https://api.packcover.com/v1/quotes \
--request POST \
--header "Authorization: Bearer pk_test_VOTRE_CLE" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: quote-demo-001" \
--data '{
"transporteur": "UPS",
"valeur_declaree": 500.00,
"devise": "EUR",
"contenu": "Appareil photo",
"date_expedition": "2026-10-05",
"pays_destination": "FR",
"mode_de_livraison": "domicile"
}'Toutes les requêtes passent par HTTPS, en TLS 1.2 au minimum. Les appels en clair sont refusés.
Utilisez le schéma Bearer avec votre clé secrète dans l'en-tête Authorization.
Le préfixe pk_test_ identifie l'environnement de test et le préfixe pk_live_ la production. Une clé de test ne crée jamais de couverture réelle et ne déclenche aucune facturation.
Ajoutez cet en-tête à toutes les requêtes POST pour qu'un renvoi après un timeout ne crée pas deux couvertures.
Adresse de base: https://api.packcover.com/v1
| Méthode | Chemin | Description |
|---|---|---|
POST | /quotes | Cotation et vérification d'éligibilité |
POST | /policies | Création d'une couverture |
GET | /policies/{id} | Consultation d'une couverture |
POST | /policies/{id}/cancel | Annulation avant prise en charge |
POST | /claims | Ouverture d'un sinistre |
POST | /claims/{id}/documents | Dépôt d'une pièce justificative |
GET | /claims/{id} | Suivi d'un sinistre |
{
"transporteur": "UPS",
"valeur_declaree": 500.00,
"devise": "EUR",
"contenu": "Appareil photo",
"date_expedition": "2026-10-05",
"pays_destination": "FR",
"mode_de_livraison": "domicile"
}{
"id_cotation": "quote_01J8N7K4D6",
"eligibilite": {
"verdict": "couvert",
"motif": null
},
"prime": 4.50,
"franchise": 50.00,
"devise": "EUR",
"plafond": 100000.00
}{
"id_cotation": "quote_01J8N7K4D6",
"expediteur": {
"nom": "Camille Martin",
"email": "camille@example.com"
},
"destinataire": {
"nom": "Alex Bernard",
"pays": "FR"
},
"reference_transporteur": "1Z999AA10123456784"
}{
"id_police": "policy_01J8N8Q2M4",
"statut": "emise",
"url_attestation": "https://api.packcover.com/v1/policies/policy_01J8N8Q2M4/certificate",
"url_facture": "https://api.packcover.com/v1/policies/policy_01J8N8Q2M4/invoice",
"date_debut_couverture": "2026-10-05T09:30:00Z"
}Vous déclarez une adresse de réception. Chaque notification est signée. L'en-tête PackCover-Signature contient une signature HMAC SHA-256 et un horodatage, à vérifier avant traitement.
En cas d'échec, la notification est réexpédiée pendant vingt-quatre heures, à intervalle croissant.
| Événement | Description |
|---|---|
policy.issued | Une couverture est créée et ses documents sont disponibles. |
policy.cancelled | Une couverture est annulée avant la prise en charge. |
claim.opened | Un dossier de sinistre est ouvert. |
claim.document_required | Une pièce justificative supplémentaire est demandée. |
claim.submitted | Le dossier complet est transmis pour traitement. |
claim.settled | L'indemnisation est versée. |
{
"event": "claim.settled",
"created_at": "2026-10-12T14:22:31Z",
"data": {
"claim_id": "claim_01J8P4M6R2",
"policy_id": "policy_01J8N8Q2M4",
"status": "settled",
"currency": "EUR",
"amount": 450.00
}
}Les erreurs renvoient un code HTTP standard et un corps JSON avec un objet error contenant code, message et, quand c'est pertinent, field.
| Code | HTTP | Description |
|---|---|---|
invalid_request | 400 | La requête est incomplète ou un champ est invalide. |
unauthorized | 401 | La clé est absente, invalide ou ne correspond pas à l'environnement appelé. |
not_eligible | 422 | L'envoi n'est pas assurable. Le motif renvoyé est le même que celui affiché dans notre parcours en ligne, par exemple un contenu refusé au transport par le transporteur choisi. |
value_above_limit | 422 | La valeur déclarée dépasse le plafond de couverture. |
shipment_already_dispatched | 422 | Le colis a déjà été remis au transporteur. |
rate_limited | 429 | La limite de requêtes de la clé est dépassée. |
server_error | 500 | Une erreur interne empêche le traitement de la requête. |
Les clés pk_test_ donnent accès au même jeu de points d'entrée. Les règles d'éligibilité et la grille tarifaire y sont identiques à la production. Aucune couverture réelle n'est émise, aucune facture n'est générée.
La limite est de 600 requêtes par minute et par clé. Au-delà, le code rate_limited est renvoyé avec un en-tête indiquant le délai avant nouvelle tentative.
Les montants sont exprimés en unités entières de la devise, avec deux décimales, et la devise est toujours indiquée explicitement.
Ces modes de connexion ne demandent aucun développement.
Dites-nous quel outil vous souhaitez connecter. Ce formulaire prépare votre demande sans afficher de clé à l'écran.
Non, trois des quatre modes de connexion n'en demandent aucun.
Voir les intégrationsOui, les clés de test donnent accès à l'ensemble des points d'entrée, sans couverture réelle ni facturation.
Oui, c'est la même grille, celle publiée sur la page Tarifs.
Voir les tarifsElle est réexpédiée pendant vingt-quatre heures, et l'état courant reste consultable par GET sur la ressource concernée.
Commencez par une estimation simple et sans engagement.