Saltar para a documentação
SDK

Formulários

`forms.list`, `get`, `create`, `update`, `delete`, `publish`, `pause`, `resume`, `duplicate`, `analytics`, `listStarters`, `getStarter`, `listSubmissions`, `getSubmission`, `deleteSubmission`, `deleteSubmissions`, `approveSubmission`, `resendConfirmation` e `subscribe`.

Todos os métodos

forms.ts
const form = await openemail.forms.create({  name: 'Newsletter sign-up',  starter: 'newsletter',  settings: { audienceIds: ['aud_4c1b8e2a7d9f05c36b4e8a71'] },  publish: true,}) console.log(form.url, form.subscribeUrl) const saved = await openemail.forms.update(form.id, {  settings: { doubleOptIn: true, senderAddress: '[email protected]' },  expectedUpdatedAt: form.updatedAt,}) const signup = await openemail.forms.subscribe(form.id, {  email: '[email protected]',  first_name: 'Ann',  consent: true,}) for await (const submission of openemail.forms.iterateSubmissions(form.id, { status: 'pending' })) {  if (submission.expired) await openemail.forms.resendConfirmation(form.id, submission.id)} const stats = await openemail.forms.analytics(form.id, { days: 30 })const starters = await openemail.forms.listStarters() await openemail.forms.pause(form.id)await openemail.forms.resume(form.id)const copy = await openemail.forms.duplicate(form.id)await openemail.forms.delete(copy.id) console.log(saved.senderIssue, signup.outcome, stats.totals.conversion, starters.length)

Um formulário guarda um rascunho document e o publishedDocument que os visitantes veem. update altera o rascunho e as definições, e publish ativa o rascunho. As definições têm efeito de imediato, publicadas ou não, e expectedUpdatedAt recusa com 409 version_conflict uma alteração guardada que substituiria a de outra pessoa.

Ler requer forms:read e alterar requer forms:write. approveSubmission requer também contacts:write, porque adiciona um contacto. resendConfirmation requer também emails:send, tal como uma chamada que faça o formulário enviar correio: ativar doubleOptIn, definir senderAddress ou o email de confirmação, ou ainda publicar ou retomar um formulário com dupla confirmação. delete pede um código de verificação a um token de acesso OAuth, e a uma chave de API nunca.

subscribe inscreve alguém tal como a página do formulário faz e não envia nenhuma credencial, mesmo a partir de um cliente que tenha uma. Todas as inscrições a partir de uma mesma rede partilham um limite de 40 a cada dez minutos, por isso um servidor que reencaminha inscrições de muitas pessoas atinge-o depressa: em vez disso, adicione as pessoas que já conhece com audiences.importContacts. Passe a página onde estava o formulário como oe_source, deixe de fora oe_started, e envie oe_website vazio ou não o envie de todo.

Um 422 de subscribe é invalid_form_submission, e o fields do erro lista cada resposta em falta ou inválida como { key, error }, com motivos como required, email e option. O cliente é para servidores. Num navegador, envie as respostas com fetch para o subscribeUrl do formulário, como corpo JSON ou com um cabeçalho Accept: application/json, e ele responde em JSON a pedidos de qualquer origem. Sem nenhum dos dois, responde com um redirecionamento 303 para a página alojada.

Resposta: FormDetailResource

list resolve para uma página de FormResource, dos mais recentes para os mais antigos, sem document e settings, e listAll e iterate percorrem todas as páginas. get, create, update, publish, pause, resume e duplicate resolvem para um FormDetailResource, que acrescenta document, publishedDocument, settings, audiences, senderIssue e senderProblem.

idstring
O identificador duradouro: `frm_` seguido de 24 caracteres hexadecimais.
status'draft' | 'live' | 'paused'
`draft` até à primeira publicação, depois `live` enquanto aceita inscrições e `paused` enquanto não as aceita. Um formulário nunca volta a `draft`.
urlstring
A página alojada do formulário publicado, para partilhar como ligação.
subscribeUrlstring
Para onde um formulário HTML simples, ou `fetch`, envia as respostas.
documentFormDocument
O rascunho: os `fields` por ordem, os textos de `copy` à sua volta e o `style`.
publishedDocumentFormDocument | null
O que os visitantes veem agora. Null até à primeira publicação.
settingsFormSettings
Para onde vão as inscrições e o que acontece depois de cada uma: `audienceIds`, `doubleOptIn`, `senderAddress`, o email de confirmação, `successAction`, `redirectUrl` e `notifyAddresses`.
hasUnpublishedChangesboolean
True quando o rascunho difere do que os visitantes veem. Sempre false antes da primeira publicação.
senderIssue'missing' | 'not_sendable' | 'not_allowed' | null
Porque é que um formulário com dupla confirmação não pode enviar os seus emails de confirmação neste momento, ou null quando pode.
statsFormStats
`views`, `submissions`, `added`, `pending` e `lastSubmittedAt`, contados no momento da leitura.

Submissões

listSubmissions devolve páginas das mais recentes para as mais antigas, com q para pesquisar endereços de email e status para pending ou added, e listAllSubmissions e iterateSubmissions percorrem todas as páginas. Cada FormSubmissionResource guarda as respostas tal como foram enviadas, etiquetas incluídas, para que continue a ler-se corretamente depois de o formulário mudar.

resendConfirmation resolve para a submissão com confirmationSent. É false quando nada saiu: um endereço recebe uma confirmação por formulário a cada dez minutos e cinco por dia em todo o espaço de trabalho, e uma submissão já adicionada não recebe nenhuma. expired assinala uma inscrição pendente cuja ligação mais recente expirou.

A sua caixa de entrada,
nos seus termos.

Infraestrutura de email para empresas, IA, agentes e correio pessoal. Feita para escala, privacidade e controlo. Tudo o que o email devia ter tido desde o primeiro dia.

© 2026 OpenEmail. Todos os direitos reservados.