API de Equipes
Gerencie equipes, membros, papéis e convites para a criação colaborativa de formulários.
A API de Equipes permite criar e gerenciar equipes para a criação colaborativa de formulários. As equipes permitem que vários usuários compartilhem formulários, com controle de acesso baseado em papéis definindo quem pode visualizar, editar e excluir formulários e respostas.
Todos os corpos de requisição e resposta usam nomes de campos em snake_case.
Papéis da Equipe
ownerroleAcesso completo. Pode gerenciar membros, cobrança e excluir a equipe.
adminrolePode criar, editar e excluir formulários, gerenciar membros e visualizar respostas.
editorrolePode criar e editar formulários e visualizar respostas. Não pode gerenciar membros.
viewerrolePode visualizar formulários e respostas. Não pode criar nem editar.
/api/v1/teamsPOST/api/v1/teamsGET/api/v1/teams/:teamIdPUT/api/v1/teams/:teamIdDELETE/api/v1/teams/:teamIdGET/api/v1/teams/:teamId/membersPOST/api/v1/teams/:teamId/membersPUT/api/v1/teams/:teamId/members/:memberIdDELETE/api/v1/teams/:teamId/members/:memberIdGET/api/v1/teams/:teamId/invitationsPOST/api/v1/teams/:teamId/invitationsDELETE/api/v1/teams/:teamId/invitations/:invIdGET/api/v1/teams/:teamId/audit-logsGET/api/v1/teams/:teamId/brandingPUT/api/v1/teams/:teamId/brandingDELETE/api/v1/teams/:teamId/brandingGET/api/v1/teams/:teamId/subdomainPUT/api/v1/teams/:teamId/subdomainGET/api/v1/teams/:teamId/custom-domainPOST/api/v1/teams/:teamId/custom-domainDELETE/api/v1/teams/:teamId/custom-domainPOST/api/v1/teams/:teamId/custom-domain/verifyGET/api/v1/teams/:teamId/billingGET/api/v1/teams/:teamId/analyticsGET/api/v1/forms/:id/guestsPOST/api/v1/forms/:id/guestsDELETE/api/v1/forms/:id/guestsPOST/api/v1/forms/guests/acceptPUT/api/v1/teams/:teamId/members/:memberId/telephonyGET/api/voices?teamId=:teamIdPOST/api/voices/createResposta
{
"teams": [
{
"id": "665b2c3d4e5f6a7b8c9d0e1f",
"name": "Marketing",
"slug": "marketing",
"owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
"created_at": "2026-01-10T09:00:00.000Z",
"updated_at": "2026-02-15T11:30:00.000Z",
"member_count": 5,
"your_role": "admin"
},
{
"id": "665c3d4e5f6a7b8c9d0e1f20",
"name": "Product",
"slug": "product",
"owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
"created_at": "2026-02-01T14:00:00.000Z",
"updated_at": "2026-02-20T16:45:00.000Z",
"member_count": 3,
"your_role": "owner"
}
]
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams" \
-H "Authorization: Bearer YOUR_API_KEY"
Criar Equipe
/api/v1/teamsCria uma nova equipe. O usuário autenticado se torna o proprietário da equipe.
Corpo da Requisição
namestringNome da equipe
Exemplo de Requisição
{
"name": "Marketing"
}
Resposta
{
"id": "665b2c3d4e5f6a7b8c9d0e1f",
"name": "Marketing",
"slug": "marketing",
"owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
"created_at": "2026-02-28T12:00:00.000Z",
"updated_at": "2026-02-28T12:00:00.000Z"
}
Exemplos de Código
curl -X POST "https://api.nueform.io/api/v1/teams" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Marketing" }'
Obter Equipe
/api/v1/teams/:teamIdRecupera uma única equipe pelo ID.
Qualquer membro da equipe pode chamá-lo. A resposta nunca inclui os segredos da equipe (a string de conexão do banco de dados de residência de dados, o ID da conexão SSO ou IDs internos de domínio), e sso_domain_verify_token (o valor DNS que comprova o domínio SSO) só é retornado para quem chama com o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"id": "665b2c3d4e5f6a7b8c9d0e1f",
"name": "Marketing",
"slug": "marketing",
"owner_id": "665a0a1b2c3d4e5f6a7b8c9d",
"created_at": "2026-01-10T09:00:00.000Z",
"updated_at": "2026-02-15T11:30:00.000Z",
"member_count": 5
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
-H "Authorization: Bearer YOUR_API_KEY"
Atualizar Equipe
/api/v1/teams/:teamIdAtualiza as propriedades da equipe. Requer o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Corpo da Requisição
namestringNovo nome da equipe
Exemplo de Requisição
{
"name": "Marketing & Growth"
}
Resposta
Retorna o objeto da equipe atualizado.
Exemplos de Código
curl -X PUT "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Marketing & Growth" }'
Excluir Equipe
/api/v1/teams/:teamIdExclui uma equipe permanentemente. Apenas o proprietário da equipe pode excluir uma equipe.
Excluir uma equipe remove todas as associações e convites da equipe. Os formulários pertencentes à equipe não são excluídos automaticamente, mas ficarão inacessíveis para os ex-membros da equipe.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"success": true
}
Exemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f" \
-H "Authorization: Bearer YOUR_API_KEY"
Listar Membros
/api/v1/teams/:teamId/membersRetorna todos os membros de uma equipe.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"members": [
{
"id": "66d1e2f3a4b5c6d7e8f9a0b1",
"user_id": "665a0a1b2c3d4e5f6a7b8c9d",
"email": "alice@example.com",
"first_name": "Alice",
"last_name": "Johnson",
"role": "owner",
"joined_at": "2026-01-10T09:00:00.000Z"
},
{
"id": "66d2e3f4a5b6c7d8e9f0a1b2",
"user_id": "665a1b2c3d4e5f6a7b8c9d0e",
"email": "bob@example.com",
"first_name": "Bob",
"last_name": "Smith",
"role": "editor",
"joined_at": "2026-01-15T14:30:00.000Z"
}
]
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members" \
-H "Authorization: Bearer YOUR_API_KEY"
Adicionar Membro
/api/v1/teams/:teamId/membersConvida alguém para a equipe por e-mail, exatamente como Criar Convite: o NueForm envia o convite por e-mail, ele expira após 7 dias e a pessoa entra na equipe ao aceitá-lo. Não adiciona diretamente um usuário existente. Requer o papel owner ou admin. Retorna o convite (201); responde 409 se o endereço já pertence a um membro ou já tem um convite pendente que ainda não expirou (um convite expirado não impede um novo), e 400 se o plano do proprietário da equipe não tem vagas disponíveis — um convite pendente ocupa uma vaga até expirar.
Parâmetros de Caminho
teamIdstringO ID da equipe
Corpo da Requisição
emailstringEndereço de e-mail a convidar (armazenado em minúsculas)
rolestringPapel que a pessoa recebe ao aceitar: "admin", "editor" ou "viewer"
Exemplo de Requisição
{
"email": "carol@example.com",
"role": "editor"
}
Resposta
{
"id": "66e1f2a3b4c5d6e7f8a9b0c1",
"team_id": "665b2c3d4e5f6a7b8c9d0e1f",
"email": "carol@example.com",
"role": "editor",
"invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
"token": "2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f",
"status": "pending",
"language": "en",
"expires_at": "2026-03-07T12:00:00.000Z",
"created_at": "2026-02-28T12:00:00.000Z",
"invite_url": "/teams/invite/2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f"
}
Exemplos de Código
curl -X POST "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "carol@example.com",
"role": "editor"
}'
Atualizar Papel do Membro
/api/v1/teams/:teamId/members/:memberIdAtualiza o papel de um membro da equipe. Requer o papel owner ou admin. Você não pode alterar o papel do proprietário.
Parâmetros de Caminho
teamIdstringO ID da equipe
memberIdstringO ID do membro da equipe
Corpo da Requisição
rolestringNovo papel: "admin", "editor", "viewer"
Exemplo de Requisição
{
"role": "admin"
}
Resposta
{
"id": "66d2e3f4a5b6c7d8e9f0a1b2",
"user_id": "665a1b2c3d4e5f6a7b8c9d0e",
"team_id": "665b2c3d4e5f6a7b8c9d0e1f",
"role": "admin",
"joined_at": "2026-01-15T14:30:00.000Z"
}
Exemplos de Código
curl -X PUT "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members/66d2e3f4a5b6c7d8e9f0a1b2" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "role": "admin" }'
Remover Membro
/api/v1/teams/:teamId/members/:memberIdRemove um membro de uma equipe. Requer o papel owner ou admin. O proprietário da equipe não pode ser removido. Os convites pendentes desta equipe para essa pessoa também são cancelados, para que ela não possa voltar a entrar com eles.
Parâmetros de Caminho
teamIdstringO ID da equipe
memberIdstringO ID do membro da equipe
Resposta
{
"success": true,
"message": "Member removed from team"
}
Exemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/members/66d2e3f4a5b6c7d8e9f0a1b2" \
-H "Authorization: Bearer YOUR_API_KEY"
Listar Convites
/api/v1/teams/:teamId/invitationsRetorna os convites pendentes da equipe que ainda não expiraram, dos mais recentes para os mais antigos. Qualquer membro da equipe pode chamá-lo; o campo token (o segredo do link do convite) só é incluído para quem chama com o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"invitations": [
{
"id": "66e1f2a3b4c5d6e7f8a9b0c1",
"email": "carol@example.com",
"role": "editor",
"invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
"status": "pending",
"expires_at": "2026-03-07T12:00:00.000Z",
"created_at": "2026-02-28T12:00:00.000Z"
}
]
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/invitations" \
-H "Authorization: Bearer YOUR_API_KEY"
Criar Convite
/api/v1/teams/:teamId/invitationsEnvia um convite por e-mail para entrar em uma equipe. O convite inclui um token único e expira após 7 dias. Requer o papel owner ou admin. Responde 409 se o endereço já pertence a um membro ou já tem um convite pendente que ainda não expirou (um convite expirado não impede um novo), e 400 se o plano do proprietário da equipe não tem vagas disponíveis — um convite pendente ocupa uma vaga até expirar.
Parâmetros de Caminho
teamIdstringO ID da equipe
Corpo da Requisição
emailstringEndereço de e-mail a convidar
rolestringPapel que a pessoa recebe ao aceitar: "admin", "editor" ou "viewer"
Exemplo de Requisição
{
"email": "carol@example.com",
"role": "editor"
}
Resposta
{
"id": "66e1f2a3b4c5d6e7f8a9b0c1",
"team_id": "665b2c3d4e5f6a7b8c9d0e1f",
"email": "carol@example.com",
"role": "editor",
"invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
"token": "2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f",
"status": "pending",
"language": "en",
"expires_at": "2026-03-07T12:00:00.000Z",
"created_at": "2026-02-28T12:00:00.000Z",
"invite_url": "/teams/invite/2f7c1d3e-9a4b-4c1d-8e2f-0a1b2c3d4e5f"
}
Exemplos de Código
curl -X POST "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/invitations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "carol@example.com",
"role": "editor"
}'
Cancelar Convite
/api/v1/teams/:teamId/invitations/:invIdCancela um convite pendente. Requer o papel owner ou admin. O token do convite deixará de ser válido.
Parâmetros de Caminho
teamIdstringO ID da equipe
invIdstringO ID do convite
Resposta
{
"success": true,
"message": "Invitation cancelled"
}
Exemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/invitations/66e1f2a3b4c5d6e7f8a9b0c1" \
-H "Authorization: Bearer YOUR_API_KEY"
Logs de Auditoria
/api/v1/teams/:teamId/audit-logsRetorna uma lista paginada de eventos de log de auditoria da equipe. Requer o papel owner ou admin. Disponível apenas no plano Enterprise.
Parâmetros de Caminho
teamIdstringO ID da equipe
Parâmetros de Consulta
actionstringFiltre por tipo de ação (por exemplo, "form.published", "member.removed")
user_idstringFiltre pelo usuário que realizou a ação
sincestringData ISO 8601 — apenas eventos a partir desta data
untilstringData ISO 8601 — apenas eventos até esta data
pageintegerNúmero da página (padrão: 1)
per_pageintegerResultados por página (padrão: 50, máx.: 100)
Resposta
{
"events": [
{
"id": "670a1b2c3d4e5f6a7b8c9d0e",
"action": "form.published",
"user_id": "665a0a1b2c3d4e5f6a7b8c9d",
"user_email": "alice@example.com",
"details": {
"form_id": "665f1a2b3c4d5e6f7a8b9c0d",
"form_title": "Customer Survey"
},
"ip_address": "203.0.113.42",
"timestamp": "2026-03-20T14:30:00.000Z"
}
],
"total": 1,
"page": 1,
"per_page": 50
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/audit-logs?action=form.published&per_page=10" \
-H "Authorization: Bearer YOUR_API_KEY"
Obter Branding da Equipe
/api/v1/teams/:teamId/brandingRetorna a configuração de branding da equipe. Requer associação à equipe.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"logo_url": "https://cdn.nueform.io/teams/665b2c/logo.png",
"primary_color": "#6366f1",
"background_color": "#ffffff",
"text_color": "#1a1a1a",
"font_family": "Inter",
"footer_text": "Powered by Acme Corp"
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/branding" \
-H "Authorization: Bearer YOUR_API_KEY"
Atualizar Branding da Equipe
/api/v1/teams/:teamId/brandingAtualiza a configuração de branding da equipe. Requer o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Corpo da Requisição
logo_urlstringURL do logo da equipe
primary_colorstringCor hexadecimal primária (por exemplo, "#6366f1")
background_colorstringCor hexadecimal de fundo
text_colorstringCor hexadecimal do texto
font_familystringNome da família de fontes do Google Fonts
footer_textstringTexto personalizado do rodapé
Exemplo de Requisição
{
"primary_color": "#8b5cf6",
"font_family": "Poppins",
"footer_text": "2026 Acme Corp. All rights reserved."
}
Resposta
Retorna o objeto de branding atualizado.
Exemplos de Código
curl -X PUT "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/branding" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "primary_color": "#8b5cf6", "font_family": "Poppins" }'
Limpar Branding da Equipe
/api/v1/teams/:teamId/brandingRemove todas as configurações de branding da equipe, revertendo os formulários para os padrões do proprietário ou do sistema. Requer o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"success": true
}
Exemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/branding" \
-H "Authorization: Bearer YOUR_API_KEY"
Obter Subdomínio
/api/v1/teams/:teamId/subdomainRetorna a configuração de subdomínio da equipe. Requer associação à equipe.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"subdomain": "acme-marketing",
"full_url": "https://acme-marketing.nueform.io"
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/subdomain" \
-H "Authorization: Bearer YOUR_API_KEY"
Definir Subdomínio
/api/v1/teams/:teamId/subdomainDefine ou atualiza o subdomínio da equipe. Requer o papel owner ou admin. Requer o plano Pro ou Enterprise.
Parâmetros de Caminho
teamIdstringO ID da equipe
Corpo da Requisição
subdomainstringSubdomínio desejado (apenas letras minúsculas, números e hifens)
Exemplo de Requisição
{
"subdomain": "acme-marketing"
}
Resposta
{
"subdomain": "acme-marketing",
"full_url": "https://acme-marketing.nueform.io"
}
Exemplos de Código
curl -X PUT "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/subdomain" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "subdomain": "acme-marketing" }'
Obter Domínio Personalizado
/api/v1/teams/:teamId/custom-domainRetorna a configuração de domínio personalizado da equipe. Requer associação à equipe. Disponível apenas no plano Enterprise.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"domain": "forms.acmecorp.com",
"status": "verified",
"ssl_status": "active",
"cname_target": "custom.nueform.io",
"verified_at": "2026-03-15T10:00:00.000Z"
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/custom-domain" \
-H "Authorization: Bearer YOUR_API_KEY"
Adicionar Domínio Personalizado
/api/v1/teams/:teamId/custom-domainAdiciona um domínio personalizado à equipe. Requer o papel owner ou admin. Disponível apenas no plano Enterprise. Após adicionar, use o endpoint Verificar Domínio para confirmar a configuração de DNS.
Parâmetros de Caminho
teamIdstringO ID da equipe
Corpo da Requisição
domainstringO domínio personalizado (por exemplo, "forms.acmecorp.com")
Exemplo de Requisição
{
"domain": "forms.acmecorp.com"
}
Resposta
{
"domain": "forms.acmecorp.com",
"status": "pending_verification",
"cname_target": "custom.nueform.io",
"instructions": "Add a CNAME record pointing forms.acmecorp.com to custom.nueform.io"
}
Exemplos de Código
curl -X POST "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/custom-domain" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "domain": "forms.acmecorp.com" }'
Remover Domínio Personalizado
/api/v1/teams/:teamId/custom-domainRemove o domínio personalizado da equipe. Os formulários voltarão para a URL padrão do NueForm. Requer o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"success": true
}
Exemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/custom-domain" \
-H "Authorization: Bearer YOUR_API_KEY"
Verificar Domínio Personalizado
/api/v1/teams/:teamId/custom-domain/verifyVerifica se os registros DNS estão configurados corretamente para o domínio personalizado. O SSL é provisionado automaticamente após a verificação bem-sucedida. Requer o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta (Sucesso)
{
"domain": "forms.acmecorp.com",
"status": "verified",
"ssl_status": "provisioning",
"verified_at": "2026-03-20T15:00:00.000Z"
}
Resposta (Falha)
{
"domain": "forms.acmecorp.com",
"status": "pending_verification",
"error": "CNAME record not found. Expected: forms.acmecorp.com -> custom.nueform.io"
}
Exemplos de Código
curl -X POST "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/custom-domain/verify" \
-H "Authorization: Bearer YOUR_API_KEY"
Obter Cobrança
/api/v1/teams/:teamId/billingRetorna o resumo de cobrança da equipe, incluindo detalhes do plano, uso de assentos e informações da próxima fatura. Requer o papel owner ou admin.
Parâmetros de Caminho
teamIdstringO ID da equipe
Resposta
{
"plan": "enterprise",
"billing_cycle": "monthly",
"price_per_month": 99,
"included_seats": 5,
"used_seats": 14,
"extra_seats": 0,
"extra_seat_cost": 1.00,
"viewer_seats": 38,
"next_invoice_date": "2026-04-01T00:00:00.000Z",
"next_invoice_amount": 99.00
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/billing" \
-H "Authorization: Bearer YOUR_API_KEY"
Obter Análises da Equipe
/api/v1/teams/:teamId/analyticsRetorna análises agregadas de todos os formulários da equipe. Requer associação à equipe.
Parâmetros de Caminho
teamIdstringO ID da equipe
Parâmetros de Consulta
sincestringData ISO 8601 — apenas dados a partir desta data
untilstringData ISO 8601 — apenas dados até esta data
Resposta
{
"total_forms": 24,
"total_responses": 12580,
"avg_completion_rate": 0.73,
"responses_by_day": [
{ "date": "2026-03-19", "count": 142 },
{ "date": "2026-03-20", "count": 167 }
],
"top_forms": [
{
"form_id": "665f1a2b3c4d5e6f7a8b9c0d",
"title": "Customer Survey",
"responses": 4230,
"completion_rate": 0.82
}
]
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/teams/665b2c3d4e5f6a7b8c9d0e1f/analytics?since=2026-03-01" \
-H "Authorization: Bearer YOUR_API_KEY"
Listar Convidados do Formulário
/api/v1/forms/:id/guestsRetorna todos os convidados de um formulário específico. Requer o papel owner ou admin na equipe do formulário.
Parâmetros de Caminho
idstringO ID do formulário
Resposta
{
"guests": [
{
"id": "671a2b3c4d5e6f7a8b9c0d1e",
"email": "contractor@external.com",
"first_name": "Dana",
"last_name": "Lee",
"permission": "edit",
"invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
"accepted_at": "2026-03-18T10:00:00.000Z"
}
]
}
Exemplos de Código
curl -X GET "https://api.nueform.io/api/v1/forms/665f1a2b3c4d5e6f7a8b9c0d/guests" \
-H "Authorization: Bearer YOUR_API_KEY"
Convidar Convidado
/api/v1/forms/:id/guestsConvida um colaborador externo para um formulário específico. Requer o papel owner ou admin na equipe do formulário. O convidado recebe um convite por e-mail.
Parâmetros de Caminho
idstringO ID do formulário
Corpo da Requisição
emailstringEndereço de e-mail do convidado
permissionstringNível de permissão: "view" ou "edit" (padrão: "view")
Exemplo de Requisição
{
"email": "contractor@external.com",
"permission": "edit"
}
Resposta
{
"id": "671a2b3c4d5e6f7a8b9c0d1e",
"email": "contractor@external.com",
"permission": "edit",
"status": "pending",
"invited_by": "665a0a1b2c3d4e5f6a7b8c9d",
"created_at": "2026-03-20T12:00:00.000Z"
}
Exemplos de Código
curl -X POST "https://api.nueform.io/api/v1/forms/665f1a2b3c4d5e6f7a8b9c0d/guests" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "contractor@external.com",
"permission": "edit"
}'
Remover Convidado
/api/v1/forms/:id/guestsRemove o acesso de um convidado a um formulário específico. Requer o papel owner ou admin na equipe do formulário.
Parâmetros de Caminho
idstringO ID do formulário
Corpo da Requisição
guest_idstringO ID do convidado a remover
Exemplo de Requisição
{
"guest_id": "671a2b3c4d5e6f7a8b9c0d1e"
}
Resposta
{
"success": true
}
Exemplos de Código
curl -X DELETE "https://api.nueform.io/api/v1/forms/665f1a2b3c4d5e6f7a8b9c0d/guests" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "guest_id": "671a2b3c4d5e6f7a8b9c0d1e" }'
Aceitar Convite de Convidado
/api/v1/forms/guests/acceptAceita um convite de convidado usando o token do e-mail de convite. O usuário autenticado ganha acesso ao formulário com o nível de permissão especificado.
Corpo da Requisição
tokenstringO token do convite do link do e-mail
Exemplo de Requisição
{
"token": "gt_abc123def456ghi789"
}
Resposta
{
"form_id": "665f1a2b3c4d5e6f7a8b9c0d",
"form_title": "Customer Survey",
"permission": "edit",
"team_name": "Marketing"
}
Exemplos de Código
curl -X POST "https://api.nueform.io/api/v1/forms/guests/accept" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "token": "gt_abc123def456ghi789" }'
Respostas de Erro
Respostas de erro padrão retornadas pelos endpoints da API de Equipes.
Códigos de Erro
400Bad RequestCampos obrigatórios ausentes, e-mail ou papel inválido, ou nenhuma vaga disponível no plano do proprietário da equipe
401UnauthorizedChave de API ausente ou inválida
403ForbiddenNão é membro da equipe, ou papel insuficiente para a ação
404Not FoundEquipe, membro ou convite não encontrado
409ConflictUsuário já é membro, convite duplicado
500Server ErrorErro interno do servidor
Exemplo de Erro
{
"error": {
"code": "CONFLICT",
"message": "A pending invitation already exists for this email",
"status": 409
}
}
Atualizar Acesso de Telefonia
/api/v1/teams/:teamId/members/:memberId/telephonyAtualize o nível de acesso de telefonia de um membro. Requer o papel admin ou owner. O acesso de telefonia controla quais ações relacionadas a telefone um membro pode realizar, independentemente do seu papel na equipe.
Níveis de Acesso de Telefonia
| Nível | Permissões |
|---|---|
none | Sem acesso de telefonia |
observer | Visualizar logs de chamadas, gravações, números de telefone e vozes da equipe |
operator | Fazer chamadas de saída, vincular números a formulários, iniciar campanhas |
manager | Provisionar/liberar números, gerenciar campanhas, pausar/retomar números |
full | Controle completo, incluindo criar/excluir vozes da equipe |
Corpo da Requisição
telephony_accessstringobrigatórioO nível de acesso de telefonia a definir. Um de: none, observer, operator, manager, full.
Requisição
{
"telephony_access": "operator"
}
Resposta
{
"message": "Telephony access updated",
"telephony_access": "operator"
}
Listar Vozes da Equipe
/api/voices?teamId=:teamIdListe todas as vozes disponíveis para o usuário, incluindo as vozes de equipe da equipe especificada. As vozes de equipe são compartilhadas com todos os membros da equipe que têm acesso de telefonia de nível Observer ou superior.
A resposta inclui os campos source e teamName para distinguir entre vozes pessoais e de equipe.
Resposta
{
"voices": [
{
"id": "qwen:preset:Ryan",
"name": "Ryan",
"category": "preset",
"source": "system"
},
{
"id": "qwen:clone:abc123",
"name": "My Voice",
"category": "custom",
"type": "clone",
"source": "personal"
},
{
"id": "qwen:clone:def456",
"name": "Team Voice",
"category": "custom",
"type": "design",
"source": "team",
"teamName": "Marketing Team",
"teamId": "team123"
}
]
}
Criar Voz da Equipe
/api/voices/createCrie uma voz personalizada e atribua-a a uma equipe. Requer a permissão de telefonia Full Access na equipe de destino. A conta do criador da voz é cobrada pela taxa de US$ 5 de criação de voz.
Corpo da Requisição
namestringobrigatórioNome de exibição da voz.
typestringobrigatórioTipo de voz: clone ou design.
teamIdstringobrigatórioO ID da equipe à qual atribuir a voz.
sampleBlobUrlstringURL da amostra de áudio para vozes clonadas.
Requisição
{
"name": "Team Support Voice",
"type": "design",
"teamId": "team123",
"designGender": "female",
"designTone": "professional"
}
Resposta
{
"voice": {
"id": "qwen:clone:new123",
"dbId": "new123",
"name": "Team Support Voice",
"type": "design",
"category": "custom",
"createdAt": "2026-03-25T00:00:00.000Z"
}
}