Crie uma string vCard para QR
Transforme nome, telefone, e-mail e organização em uma carga vCard 3.0 preparada para fluxos com QR Code.
Executar grátis
O resultado é uma string determinística com os marcadores obrigatórios, escape seguro e finais de linha interoperáveis. Você pode colar essa carga em um codificador QR ou enviá-la à próxima etapa de uma automação. O nome é obrigatório, enquanto os demais dados são opcionais; assim, a operação atende desde um cartão pessoal mínimo até um contato comercial mais completo.
Monte o contato antes de gerar o QR Code
Um QR Code de contato normalmente contém texto estruturado, não um formato de contato exclusivo da imagem. Esta capacidade cria essa camada: uma carga vCard 3.0 iniciada por BEGIN:VCARD, com VERSION:3.0, o nome formatado obrigatório e END:VCARD no final. Informe um nome não vazio e, opcionalmente, telefone, e-mail e organização. Valores opcionais em branco são omitidos. Depois, use a carga como entrada de texto em qualquer codificador QR compatível. Separar a montagem do conteúdo da geração da imagem permite revisar, armazenar, testar e reutilizar os dados antes de definir tamanho, correção de erros, cores ou formato gráfico. O diagnóstico também fica mais claro: se o leitor reconhece a vCard, mas o símbolo impresso falha, o problema está na renderização. Como o processamento é determinístico, entradas iguais sempre produzem exatamente a mesma string.
Entenda o escape, as quebras de linha e os campos opcionais
Valores vCard não são linhas de texto livres. Barras invertidas, vírgulas, pontos e vírgulas e quebras de linha têm significado estrutural; concatená-los diretamente pode alterar o contato ou gerar interpretações diferentes entre agendas. Este construtor escapa esses caracteres e usa finais CRLF esperados pelo formato. Uma quebra interna no nome ou na organização vira uma nova linha escapada dentro da propriedade, não uma propriedade acidental. O nome é gravado como FN. Telefone, e-mail e organização viram TEL, EMAIL e ORG somente quando há texto depois da remoção dos espaços externos. Os caracteres relevantes no interior permanecem intactos. A saída também inclui um CRLF final após END:VCARD, atendendo sistemas que esperam um registro textual terminado de maneira convencional. Essas decisões mantêm a carga compacta, previsível e fiel aos dados enviados por você.
Use a carga com segurança em automações e códigos QR
Pegue o campo payload retornado e forneça-o sem alterações como conteúdo de texto ao gerador QR. Não faça uma segunda serialização JSON nem transforme as quebras de linha em barras visíveis: o símbolo precisa codificar o texto vCard real. Antes de imprimir ou distribuir amplamente, teste o código com diferentes câmeras ou aplicativos de contatos. Leitura, tamanho de impressão, contraste e correção de erros do QR ficam fora desta capacidade, embora afetem o resultado final. Em automações, guarde os campos estruturados junto da carga para poder regenerá-la quando um contato mudar, em vez de editar texto codificado. Se o seu produto exigir regras rigorosas, valide e-mail e telefone antes; aqui eles são tratados como strings e serializados com segurança. Cada solicitação bem-sucedida pela API custa US$ 0,002. Um nome vazio ou composto apenas por espaços gera um erro de entrada.
Casos de uso
Crie um cartão profissional digital
Converta identidade profissional e dados diretos de contato na camada textual de um QR Code para cartão de visita.
Compartilhe contatos em credenciais
Gere cargas vCard consistentes a partir dos registros dos participantes antes de imprimir códigos individuais.
Automatize recursos do diretório
Reconstrua cargas prontas para QR quando o telefone, o e-mail ou a organização de uma pessoa mudar.
Perguntas frequentes
Qual versão da vCard é usada?
A carga declara VERSION:3.0 e gera um registro compacto com FN e as propriedades TEL, EMAIL e ORG fornecidas por você.
Posso omitir telefone, e-mail ou organização?
Sim. Os três campos são opcionais; um valor ausente ou em branco não cria uma propriedade vazia.
Por que o nome é obrigatório?
O nome fornece a propriedade formatada que identifica o contato. Um valor vazio ou só com espaços gera erro de entrada inválida.
Esta operação gera a imagem do QR Code?
Não. Ela retorna a string padronizada que você deve fornecer a um gerador de QR Code separado.
Vírgulas e quebras de linha são tratadas com segurança?
Sim. Barras invertidas, vírgulas, pontos e vírgulas e novas linhas são escapados antes da montagem das propriedades.
Quanto custa uma solicitação pela API?
Cada solicitação concluída custa US$ 0,002. A mesma transformação determinística também pode ser executada no navegador.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"name": "Ada Lovelace"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.qr_vcard_payload",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |