Gere um certificado de conclusão online
Crie um certificado de conclusão consistente a partir de quatro dados essenciais: nome do destinatário, curso concluído ou conquista reconhecida, organização emissora e data de exibição.
Executar grátis
O gerador valida esses valores e devolve um layout documental estruturado com seções ordenadas de cabeçalho, apresentação, destinatário, reconhecimento, conquista, emissor e data. Use o resultado como fonte confiável para um modelo HTML, renderizador de PDF, anexo de e-mail, plataforma de aprendizagem ou sistema interno de registros.
Prepare dados corretos para o certificado
Comece pelo nome do destinatário exatamente como ele deve aparecer no certificado final. Inclua a capitalização preferida, iniciais, sufixos profissionais e sinais diacríticos relevantes, pois o gerador preserva caracteres significativos enquanto remove espaços desnecessários ao redor ou repetidos. Em seguida, informe um título conciso para o curso ou a conquista. Um título específico, como Gestão avançada de projetos, comunica mais do que uma expressão vaga como Treinamento concluído. Digite o nome público formal da organização emissora, em vez de uma abreviação interna, a menos que ela realmente faça parte da marca. Por fim, forneça a data no formato esperado pelo seu público. Ela é tratada como texto de apresentação e não é interpretada nem convertida. Revise a grafia antes do envio. O serviço não deduz nomes ausentes, inventa credenciais, decide se alguém conquistou um prêmio nem confirma a autoridade da organização. Valores obrigatórios vazios são rejeitados, e um nome de destinatário vazio sempre gera erro de entrada inválida.
Entenda o layout estruturado
A resposta é um certificado documental estruturado, não uma imagem ou um PDF já renderizado. O layout declara orientação horizontal, alinhamento centralizado e uma lista ordenada de seções semânticas. Essas seções identificam o cabeçalho principal, a linha introdutória, o nome do destinatário, a frase de reconhecimento, o título da conquista, a organização emissora e a data. Cada informação importante também aparece em um objeto normalizado próprio, facilitando o mapeamento para aplicativos que não desejem percorrer as seções. Um texto compacto reúne os quatro valores para prévias, índices de busca, registros ou resumos acessíveis. Como o algoritmo não usa relógio atual, identificador aleatório, rede, modelo nem estado oculto, a mesma entrada normalizada sempre produz o mesmo JSON. O gerador monta a hierarquia do conteúdo, mas não define tipografia, cores, selos, assinaturas, credenciamento ou validade jurídica. Seu renderizador continua responsável pelo estilo visual, dimensões, transbordamento, incorporação de fontes, margens e ativos autorizados de assinatura.
Renderize e integre o resultado com segurança
Conecte as seções retornadas aos componentes do seu modelo na ordem indicada. Um aplicativo web pode mapear cada função para um elemento HTML e uma folha de estilos; um fluxo de documentos pode inserir os mesmos valores em um modelo DOCX ou PDF; e uma plataforma de aprendizagem pode salvar os campos normalizados junto ao registro de conclusão. Sempre escape o texto corretamente para o formato de destino, sobretudo quando os valores vierem de administradores, listas carregadas ou sistemas externos. Teste nomes pessoais e títulos extensos na fonte escolhida para que a quebra de linha não cubra bordas, selos ou áreas de assinatura. Se os certificados precisarem de números de série, links de verificação, instrutores, notas, validade ou prova criptográfica, adicione esses dados em um sistema controlado que seja responsável pelos registros. Esta capacidade não autentica destinatários nem emite credenciais sozinha. Ela fornece uma estrutura previsível para um certificado por solicitação a US$ 0,002, separando a montagem determinística da identidade visual, entrega, retenção e conformidade.
Casos de uso
Conclua um fluxo de curso online
Transforme um registro de conclusão em campos consistentes prontos para um renderizador com identidade visual.
Reconheça uma conquista interna
Prepare um certificado estruturado para treinamentos, voluntariado, oficinas ou marcos profissionais.
Preencha modelos de documentos
Mapeie seções semânticas previsíveis em modelos HTML, DOCX, PDF, e-mail ou impressão.
Perguntas frequentes
Quanto custa cada solicitação?
Cada solicitação API custa US$ 0,002.
O que acontece se o nome estiver vazio?
A solicitação falha com um erro de entrada inválida, pois não é possível montar um certificado sem destinatário.
O resultado inclui PDF ou imagem?
Não. Ele devolve um layout documental JSON estruturado para você enviar ao renderizador de sua preferência.
O gerador verifica conclusão ou credenciamento?
Não. Você deve verificar a conquista e possuir autoridade para emitir o certificado.
A data será reformatada?
Não. Apenas espaços extras são normalizados; a data permanece como texto de exibição.
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/doc/certificate-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"recipient_name":"Jordan Lee","achievement_title":"Advanced Project Management","issuing_organization":"Northwind Learning Institute","date":"July 25, 2026"}'const res = await fetch("https://api.kit.forhosting.com/doc/certificate-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"recipient_name": "Jordan Lee",
"achievement_title": "Advanced Project Management",
"issuing_organization": "Northwind Learning Institute",
"date": "July 25, 2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/certificate-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"recipient_name": "Jordan Lee",
"achievement_title": "Advanced Project Management",
"issuing_organization": "Northwind Learning Institute",
"date": "July 25, 2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/certificate-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"recipient_name":"Jordan Lee","achievement_title":"Advanced Project Management","issuing_organization":"Northwind Learning Institute","date":"July 25, 2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"recipient_name":"Jordan Lee","achievement_title":"Advanced Project Management","issuing_organization":"Northwind Learning Institute","date":"July 25, 2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/certificate-generate", 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
{
"recipient_name": "Jordan Lee",
"achievement_title": "Advanced Project Management",
"issuing_organization": "Northwind Learning Institute",
"date": "July 25, 2026"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.certificate_generate",
"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.
Limites
max_mb | 25 |
max_pages | 200 |
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. |