Créez une chaîne vCard pour QR
Transformez un nom, un téléphone, une adresse e-mail et une organisation en une charge vCard 3.0 conçue pour les QR codes.
Lancer gratuitement
Vous obtenez une chaîne déterministe avec les balises vCard requises, un échappement sûr et des fins de ligne interopérables. Collez-la dans un encodeur QR ou transmettez-la à l’étape suivante de votre automatisation. Le nom est obligatoire, tandis que les autres coordonnées restent facultatives : le même traitement convient donc à une fiche personnelle minimale comme à un contact professionnel complet.
Préparez le contact avant de générer le QR code
Un QR code de contact contient généralement du texte structuré, et non un format de contact propre à l’image. Cette capacité crée cette couche : une charge vCard 3.0 commençant par BEGIN:VCARD, déclarant VERSION:3.0, comportant le nom formaté obligatoire et se terminant par END:VCARD. Indiquez un nom non vide, puis éventuellement un téléphone, un e-mail et une organisation. Les valeurs facultatives vides sont omises. Vous pouvez ensuite transmettre la charge à tout encodeur QR compatible. La séparation entre contenu et image permet de vérifier, conserver, tester ou réutiliser les données avant de choisir dimensions, correction d’erreur, couleurs ou format. Elle simplifie aussi le diagnostic : si un lecteur reconnaît la vCard mais peine à lire le symbole imprimé, le rendu QR est en cause. À entrées identiques, la chaîne produite reste strictement identique.
Maîtrisez l’échappement, les fins de ligne et les propriétés
Les valeurs vCard ne sont pas de simples lignes libres. Barres obliques inverses, virgules, points-virgules et retours à la ligne ont un sens structurel ; une concaténation directe peut modifier le contact ou créer des interprétations divergentes. Ce générateur échappe ces caractères et emploie les fins de ligne CRLF attendues. Un retour à la ligne dans un nom ou une organisation devient une séquence échappée dans la propriété, et non une propriété accidentelle. Le nom est écrit dans FN. Le téléphone, l’e-mail et l’organisation deviennent TEL, EMAIL et ORG uniquement si leur valeur épurée n’est pas vide. Les caractères utiles à l’intérieur sont conservés. La sortie ajoute enfin CRLF après END:VCARD afin de satisfaire les systèmes attendant un enregistrement textuel correctement terminé. La charge demeure ainsi compacte, stable et fidèle aux informations que vous avez fournies.
Intégrez la charge de façon fiable à vos automatisations
Prenez le champ payload renvoyé et utilisez-le sans modification comme contenu texte du générateur QR. Ne le sérialisez pas une seconde fois en JSON et ne remplacez pas ses fins de ligne par des barres visibles : le symbole doit encoder le véritable texte vCard. Avant toute impression ou diffusion importante, testez le code avec plusieurs caméras ou applications de contacts. Le comportement du lecteur, la taille, le contraste et la correction d’erreur QR dépassent le périmètre de cette capacité, mais influencent le résultat. Dans une automatisation, conservez les champs sources avec la charge afin de régénérer proprement la fiche après une modification. Validez en amont la sémantique des e-mails et téléphones si vos règles l’exigent. Chaque requête API réussie coûte $0.002. Un nom vide ou uniquement composé d’espaces entraîne une erreur de saisie.
Cas d’usage
Créez une carte de visite numérique
Transformez une identité professionnelle et ses coordonnées en couche texte d’un QR code de carte de visite.
Partagez des contacts sur des badges
Produisez des charges vCard cohérentes depuis les dossiers des participants avant d’imprimer leurs QR codes.
Automatisez les ressources d’annuaire
Régénérez les charges prêtes pour QR dès que le téléphone, l’e-mail ou l’organisation d’une personne change.
Questions fréquentes
Quelle version de vCard la charge utilise-t-elle ?
Elle déclare VERSION:3.0 et produit une fiche compacte avec FN, plus les propriétés TEL, EMAIL et ORG que vous fournissez.
Puis-je omettre le téléphone, l’e-mail ou l’organisation ?
Oui. Ces trois champs sont facultatifs ; une valeur absente ou vide ne crée aucune propriété vide.
Pourquoi le nom est-il obligatoire ?
Le nom alimente la propriété de nom formaté qui identifie le contact. Une valeur vide provoque une erreur de saisie invalide.
Cette opération génère-t-elle l’image QR ?
Non. Elle renvoie la chaîne normalisée que vous devez transmettre à un générateur de QR code distinct.
Les virgules et retours à la ligne sont-ils protégés ?
Oui. Barres inverses, virgules, points-virgules et nouvelles lignes sont échappés avant l’assemblage des propriétés.
Combien coûte une requête API ?
Chaque requête réussie coûte $0.002. La même transformation déterministe peut aussi s’exécuter dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/enc/qr-vcard-payload \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Ada Lovelace"}'const res = await fetch("https://api.kit.forhosting.com/enc/qr-vcard-payload", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "Ada Lovelace"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/qr-vcard-payload",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"name": "Ada Lovelace"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/qr-vcard-payload", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"name":"Ada Lovelace"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"name":"Ada Lovelace"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/qr-vcard-payload", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"name": "Ada Lovelace"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.qr_vcard_payload",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |