API PhonkinSpam

Une seule requête, un verdict : safe, suspect ou dangerous pour n'importe quel numéro français. Gratuite, sans clé, en lecture seule.

Pour les IA / For AI agents

Résumé compact et auto-suffisant du contrat. Spec machine : /api/openapi.json (OpenAPI 3.1).

PhonkinSpam API - machine-readable summary
Base URL : http://phonkinspam.com
Auth     : none (free, no API key)
Limits   : 1 request / second / IP  ->  HTTP 429 + Retry-After header

Endpoint : GET /api/v1/number/{number}
  {number} = French phone number, any of:
             national 0XXXXXXXXX | international 33XXXXXXXXX | E.164 +33XXXXXXXXX

200 application/json (schema NumberStatus):
  status              "safe" | "suspect" | "dangerous"   # the verdict
  score               number 0..10                       # danger score
  spam_ratio          number 0..1
  report_count        integer
  known               boolean   # false = no community data (NOT a safety guarantee)
  type                "fixe" | "mobile" | "voip" | "special"
  is_demarchage_range boolean   # number is in an ARCEP cold-calling range
  number,e164,national,operator,region,
  first_reported_at,last_reported_at (ISO-8601|null),url,source,disclaimer

Unknown number       -> 200 with status="safe", known=false
Errors               -> 400 invalid_number | 429 rate_limited
                        envelope: {"error":{"code":"...","message":"..."}}

Example:
  curl http://phonkinspam.com/api/v1/number/0162000000
Spec : GET /api/openapi.json   |   Health: GET /api/v1/health

Présentation

L'API renvoie la réputation communautaire d'un numéro de téléphone français à partir des signalements publiés sur PhonkinSpam. Elle est pensée pour être intégrée dans une application, un standard téléphonique, un bot ou un assistant IA.

Aucune inscription, aucune clé. Vous interrogez directement l'URL. L'API ne modifie jamais la base : elle ne crée pas de fiche et ne compte pas votre requête comme une recherche.

Limites d'usage

1 requête par seconde et par adresse IP. Au-delà, la réponse est un code 429 accompagné d'un en-tête Retry-After (en secondes). Espacez vos appels d'au moins une seconde, ou respectez le délai indiqué.

Point d'entrée

GET http://phonkinspam.com/api/v1/number/{number}

{number} accepte les formats : national 0162000000, international 33162000000 ou E.164 +33162000000. Seuls les numéros français sont reconnus.

Réponse

Code 200, corps application/json :

Champ Type Description
statusstringLe verdict : safe, suspect ou dangerous.
scorenumberScore de dangerosité de 0 à 10.
spam_rationumberPart des votes « spam » (0 à 1).
report_countintegerNombre de signalements communautaires.
knownbooleantrue si au moins un signalement existe. false = absence de donnée, pas une garantie de fiabilité.
typestringfixe, mobile, voip ou special.
is_demarchage_rangebooleantrue si le numéro relève d'une plage ARCEP réservée au démarchage téléphonique.
operatorstring | nullOpérateur si connu.
regionstring | nullZone géographique déduite du préfixe.
first_reported_at
last_reported_at
string | nullDates ISO-8601 du premier et du dernier signalement, ou null.
number / e164 / nationalstringLe numéro dans les trois formats.
urlstringFiche publique du numéro sur PhonkinSpam.
disclaimerstringAvertissement légal (donnée communautaire indicative).

Les trois statuts

safe - aucun signal notable (score < 2,5). Pour un numéro jamais signalé, known vaut false : c'est une absence de donnée, pas un certificat de confiance.

suspect - signalé par la communauté, sans atteindre le seuil critique (score ≥ 2,5).

dangerous - fortement signalé (score ≥ 6). À traiter avec prudence.

Exemple de réponse

{
  "number": "0162000000",
  "e164": "+33162000000",
  "national": "01 62 00 00 00",
  "status": "dangerous",
  "score": 7.4,
  "spam_ratio": 0.86,
  "report_count": 128,
  "known": true,
  "type": "fixe",
  "operator": null,
  "region": "Île-de-France",
  "is_demarchage_range": true,
  "first_reported_at": "2025-11-02T09:14:00+00:00",
  "last_reported_at": "2026-06-20T18:42:00+00:00",
  "url": "http://phonkinspam.com/numero/33162000000",
  "source": "phonkinspam-community",
  "disclaimer": "Score communautaire indicatif…"
}

Exemples d'appel

cURL

curl -s http://phonkinspam.com/api/v1/number/0162000000

JavaScript (fetch)

const r = await fetch("http://phonkinspam.com/api/v1/number/0162000000");
const data = await r.json();
console.log(data.status); // "safe" | "suspect" | "dangerous"

Python (requests)

import requests
data = requests.get("http://phonkinspam.com/api/v1/number/0162000000").json()
print(data["status"])

Erreurs

400 invalid_number - le numéro n'est pas un numéro français valide.

429 rate_limited - plus d'une requête par seconde ; réessayez après le délai Retry-After.

Toutes les erreurs suivent la même enveloppe :

{ "error": { "code": "invalid_number", "message": "Numéro de téléphone français invalide." } }

Mentions légales

Le statut et le score sont issus d'un calcul automatique agrégeant les signalements des utilisateurs. Ils traduisent une perception collective et ne constituent ni un constat vérifié, ni une accusation à l'encontre du titulaire du numéro. Recoupez l'information avant toute décision et signalez les numéros indésirables au 33700 ou à Bloctel. Voir les CGU.