Cree una cadena vCard para QR
Convierta un nombre, un teléfono, un correo electrónico y una organización en una carga vCard 3.0 preparada para códigos QR.
Ejecutar — gratis
El resultado es una cadena determinista con los delimitadores obligatorios de vCard, caracteres escapados y finales de línea interoperables. Puede pegarla en un codificador QR o enviarla al siguiente paso de un flujo automatizado. El nombre es obligatorio y los demás campos son opcionales, por lo que sirve tanto para una tarjeta personal mínima como para un contacto profesional completo.
Prepare el contacto antes de generar el código QR
Un código QR de contacto suele contener texto estructurado, no un formato de contacto propio de la imagen. Esta capacidad crea esa capa: una carga vCard 3.0 que empieza con BEGIN:VCARD, declara VERSION:3.0, incluye el nombre formateado obligatorio y termina con END:VCARD. Indique un nombre no vacío y, si lo desea, teléfono, correo y organización. Los valores opcionales en blanco se omiten. Después puede usar la carga como entrada de texto de cualquier codificador QR compatible. Separar la construcción del contenido y la imagen permite revisar, guardar, probar o reutilizar los datos antes de elegir tamaño, corrección de errores, colores o formato gráfico. También facilita el diagnóstico: si un lector reconoce la vCard pero el símbolo impreso falla, el problema está en la representación QR. Con entradas idénticas siempre obtendrá exactamente la misma cadena.
Comprenda el escape, los saltos de línea y los campos opcionales
Los valores vCard no son líneas de texto arbitrarias. Las barras inversas, comas, puntos y coma y saltos de línea tienen significado estructural; concatenarlos sin tratamiento puede alterar el contacto o producir interpretaciones distintas entre agendas. Este generador escapa esos caracteres en todos los valores y usa finales CRLF, propios del formato vCard. Un salto interno del nombre o la organización se convierte en una nueva línea escapada dentro de la propiedad, no en una propiedad accidental. El nombre se escribe como FN. El teléfono, correo y organización se convierten en TEL, EMAIL y ORG solo si contienen texto tras eliminar espacios exteriores. Los caracteres significativos internos se conservan. La salida termina además con CRLF después de END:VCARD, de modo que los sistemas que esperan un registro de texto terminado convencionalmente puedan procesarla. Así se mantiene una carga pequeña, estable y fiel a los datos recibidos.
Use la carga con fiabilidad en flujos QR automatizados
Tome el campo payload devuelto y entréguelo sin cambios como contenido textual al generador QR. No vuelva a serializarlo como JSON ni sustituya los finales de línea por barras visibles: el símbolo debe codificar el texto vCard real. Antes de imprimirlo o distribuirlo, pruébelo con varias cámaras o aplicaciones de contactos. El comportamiento del lector, el tamaño de impresión, el contraste y la corrección de errores QR quedan fuera de esta capacidad, aunque afectan a la experiencia final. En automatizaciones, conserve los campos originales junto a la carga para regenerarla cuando cambie un contacto, en vez de editar texto codificado. Si su producto exige reglas estrictas, valide antes el significado del correo y el teléfono; aquí se tratan como cadenas y se serializan de forma segura. Cada solicitud correcta por API cuesta $0.002. Un nombre vacío o formado solo por espacios devuelve un error de entrada.
Qué puede hacer con ella
Cree una tarjeta profesional digital
Convierta la identidad profesional y los datos directos de contacto en la capa textual de un código QR para tarjetas.
Comparta contactos en acreditaciones
Genere cargas vCard coherentes desde registros de asistentes antes de imprimir códigos QR individuales en acreditaciones.
Automatice recursos del directorio
Reconstruya cargas de contacto listas para QR cuando cambien el teléfono, correo u organización de una persona.
Preguntas frecuentes
¿Qué versión de vCard utiliza la carga?
Declara VERSION:3.0 y genera un registro compacto con FN y las propiedades TEL, EMAIL y ORG que usted proporcione.
¿Puedo omitir teléfono, correo u organización?
Sí. Los tres campos son opcionales y, si se omiten o quedan en blanco, no se crea una propiedad vacía.
¿Por qué es obligatorio el nombre?
El nombre proporciona la propiedad de nombre formateado que identifica el contacto. Un valor vacío devuelve un error de entrada no válida.
¿Esta operación genera la imagen QR?
No. Devuelve la cadena con formato estándar que usted debe pasar a un generador de códigos QR independiente.
¿Las comas y los saltos de línea se tratan de forma segura?
Sí. Se escapan barras inversas, comas, puntos y coma y saltos internos antes de ensamblar cada propiedad.
¿Cuánto cuesta una solicitud por API?
Cada solicitud correcta cuesta $0.002. La misma transformación determinista también puede ejecutarse en el navegador.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"name": "Ada Lovelace"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.qr_vcard_payload",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |