Duas APIs, dois fluxos bem separados.
Use uma Inbox para criar tickets sem Discord ou controle um bot conectado. Cada rota deixa claro a qual produto pertence.
curl "https://api.lnup.pro/v1/inboxes" \
-H "Authorization: Bearer lup_seu_token"Token por conta
O segredo é exibido uma vez e armazenado apenas como hash.
Produtos separados
Inboxes têm IA e ferramentas próprias, sem ações ou configurações do Discord.
JSON e tempo real
Mudanças feitas pela API também aparecem nos chats abertos.
Autenticação
Obrigatória em todas as rotas abaixo.
Header
Gere o token em Conta → Configurações → API externa. O mesmo token autentica a conta, mas nunca substitui o token privado de um bot Discord.
Erros comuns
400Payload ou operação inválida401Token ausente, inválido ou revogado403A conta não possui a permissão404Recurso não encontradoTodas as rotas
26 endpoints documentados individualmente.
Inboxes da API
1/v1/inboxesQuando usar
Use para descobrir o inboxId antes de criar ou consultar tickets.
Permissão
O token precisa pertencer ao dono da Inbox.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/inboxes" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"id": "inbox_ou_object_id",
"name": "Suporte do aplicativo",
"description": "Atendimentos criados pelo backend",
"customDomainHost": null
}
]Tickets da Inbox
5/v1/inboxes/:inboxId/ticketsQuando usar
Sincronize os atendimentos da Lineup com seu painel ou sistema interno.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox na Lineup.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"_id": "ticket_id",
"workspaceType": "inbox",
"title": "Dúvida sobre cobrança",
"reason": "Preciso entender uma cobrança recente.",
"customerEmail": "maria@exemplo.com",
"isPrivate": false
}
]/v1/inboxes/:inboxId/ticketsQuando usar
Chame esta rota no backend do seu produto quando um cliente solicitar suporte.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox na Lineup.
Corpo da requisição
{
"customerId": "cliente_123",
"customerName": "Maria",
"customerEmail": "maria@exemplo.com",
"subject": "Dúvida sobre cobrança",
"category": "Financeiro",
"reason": "Preciso entender uma cobrança recente.",
"metadata": {
"orderId": "pedido_456"
}
}Regras importantes
- Todos os campos são opcionais.
- customerId deve ser um identificador estável do cliente no seu sistema.
- metadata aceita dados JSON úteis para contextualizar o atendimento.
- O customerAccessToken e o parâmetro access da chatUrl são secretos e temporários.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets" \
-H "Authorization: Bearer lup_seu_token" \
-H "Content-Type: application/json" \
-d '{
"customerId": "cliente_123",
"customerName": "Maria",
"customerEmail": "maria@exemplo.com",
"subject": "Dúvida sobre cobrança",
"category": "Financeiro",
"reason": "Preciso entender uma cobrança recente.",
"metadata": {
"orderId": "pedido_456"
}
}'Resposta
{
"ticket": {
"_id": "ticket_id",
"workspaceType": "inbox",
"title": "Dúvida sobre cobrança"
},
"chatUrl": "https://go.lnup.pro/chat/ticket_id?access=token_temporario",
"customerAccessToken": "token_temporario",
"accessExpiresAt": "2026-06-21T12:00:00.000Z"
}/v1/inboxes/:inboxId/tickets/:ticketIdQuando usar
Consulte o estado atual antes de exibir ou sincronizar um atendimento.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"_id": "ticket_id",
"workspaceType": "inbox",
"title": "Dúvida sobre cobrança",
"customerEmail": "maria@exemplo.com",
"category": "Financeiro",
"metadata": { "orderId": "pedido_456" },
"isPrivate": false
}/v1/inboxes/:inboxId/tickets/:ticketIdQuando usar
Privatize o atendimento quando o link não deve mais ser compartilhável.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
Corpo da requisição
{
"isPrivate": true,
"virtualAgentEnabled": false
}Exemplo com cURL
curl -X PATCH "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID" \
-H "Authorization: Bearer lup_seu_token" \
-H "Content-Type: application/json" \
-d '{
"isPrivate": true,
"virtualAgentEnabled": false
}'Resposta
{
"_id": "ticket_id",
"isPrivate": true,
"virtualAgentEnabled": false
}/v1/inboxes/:inboxId/tickets/:ticketIdQuando usar
Exclua um atendimento quando ele não deve mais ficar disponível.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X DELETE "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID" \
-H "Authorization: Bearer lup_seu_token"Resposta
{ "success": true }Mensagens da Inbox
3/v1/inboxes/:inboxId/tickets/:ticketId/messagesQuando usar
Sincronize o histórico com seu CRM ou painel interno.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID/messages" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"_id": "message_id",
"authorName": "Maria",
"authorRole": "customer",
"content": "Olá, preciso de ajuda."
}
]/v1/inboxes/:inboxId/tickets/:ticketId/messagesQuando usar
Responda pelo seu próprio sistema mantendo a conversa sincronizada na Lineup.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
Corpo da requisição
{
"authorRole": "agent",
"authorName": "Equipe de suporte",
"content": "Vamos verificar sua solicitação."
}Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID/messages" \
-H "Authorization: Bearer lup_seu_token" \
-H "Content-Type: application/json" \
-d '{
"authorRole": "agent",
"authorName": "Equipe de suporte",
"content": "Vamos verificar sua solicitação."
}'Resposta
{
"_id": "message_id",
"authorRole": "agent",
"content": "Vamos verificar sua solicitação."
}/v1/inboxes/:inboxId/tickets/:ticketId/transcriptQuando usar
Arquive ou entregue uma cópia legível do atendimento.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID/transcript" \
-H "Authorization: Bearer lup_seu_token"Resposta
<!doctype html>...IA da Inbox
3/v1/inboxes/:inboxId/tickets/:ticketId/tool-requestsQuando usar
Use quando seu sistema externo também precisa acompanhar aprovações pendentes.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID/tool-requests" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"_id": "request-id",
"inboxId": "inbox-id",
"toolName": "Buscar pedido",
"status": "pending",
"input": { "orderId": "pedido_456" }
}
]/v1/inboxes/:inboxId/tickets/:ticketId/tool-requests/:requestId/approveQuando usar
Aprove manualmente uma chamada sensível quando o modo da IA for Aprovar por mim.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
requestIdID da solicitação pendente.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID/tool-requests/REQUEST_ID/approve" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"_id": "request-id",
"status": "executed",
"result": "{\"status\":\"paid\"}"
}/v1/inboxes/:inboxId/tickets/:ticketId/tool-requests/:requestId/rejectQuando usar
Use quando a IA pediu uma ação que não deve ser executada.
Permissão
O token precisa pertencer ao dono da Inbox.
Parâmetros da URL
inboxIdID interno da Inbox.
ticketIdID interno do ticket.
requestIdID da solicitação pendente.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/inboxes/INBOX_ID/tickets/TICKET_ID/tool-requests/REQUEST_ID/reject" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"_id": "request-id",
"status": "rejected",
"approvedBy": "user-id"
}Bots Discord
1/v1/botsQuando usar
Use esta rota para descobrir o botId antes de criar ou consultar tickets.
Permissão
A conta precisa ter acesso ao bot.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/bots" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"id": "6a28d690368ebb8eae63f15d",
"name": "Suporte",
"status": "active",
"access": {
"isOwner": true,
"roleName": "Dono",
"permissions": ["view", "reply", "suspend"]
}
}
]Tickets do Bot
5/v1/bots/:botId/ticketsQuando usar
Use para sincronizar tickets com um CRM, painel interno ou automação externa.
Permissão
view
Parâmetros da URL
botIdID interno do bot na Lineup.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/bots/BOT_ID/tickets" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"_id": "6a29f9299be71546096a1461",
"title": "Cliente API: Compra duplicada",
"reason": "Compra duplicada",
"status": "open",
"messageCount": 4,
"virtualAgentEnabled": true,
"isPrivate": false,
"archivedAt": null
}
]/v1/bots/:botId/ticketsQuando usar
Use quando um formulário, checkout, aplicativo ou sistema próprio precisar abrir um ticket na Lineup.
Permissão
view
Parâmetros da URL
botIdID interno do bot na Lineup.
Corpo da requisição
{
"title": "Problema com pagamento",
"reason": "O cliente identificou uma cobrança duplicada.",
"guildId": "external-store",
"guildName": "Loja virtual",
"customerId": "customer_9281",
"customerName": "Marina",
"customerAvatarUrl": "https://example.com/avatar.png"
}Regras importantes
- Todos os campos são opcionais.
- Se customerId não for enviado, a Lineup gera uma identidade externa.
- guildId e guildName podem representar o sistema que originou o ticket.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/bots/BOT_ID/tickets" \
-H "Authorization: Bearer lup_seu_token" \
-H "Content-Type: application/json" \
-d '{
"title": "Problema com pagamento",
"reason": "O cliente identificou uma cobrança duplicada.",
"guildId": "external-store",
"guildName": "Loja virtual",
"customerId": "customer_9281",
"customerName": "Marina",
"customerAvatarUrl": "https://example.com/avatar.png"
}'Resposta
{
"_id": "6a29f9299be71546096a1461",
"botId": "6a28d690368ebb8eae63f15d",
"title": "Problema com pagamento",
"reason": "O cliente identificou uma cobrança duplicada.",
"status": "open",
"participants": [
{
"id": "customer_9281",
"name": "Marina",
"role": "customer"
}
]
}/v1/bots/:botId/tickets/:ticketIdQuando usar
Use antes de executar uma ação ou para refletir o estado atual em outro sistema.
Permissão
view
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"_id": "6a29f9299be71546096a1461",
"status": "open",
"isPrivate": false,
"virtualAgentEnabled": true,
"archivedAt": null,
"messageCount": 4,
"participants": []
}/v1/bots/:botId/tickets/:ticketIdQuando usar
Use para reproduzir pela API as ações disponíveis na administração do ticket.
Permissão
suspend para status, close para arquivamento, reply para IA e manage_people para privacidade.
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Corpo da requisição
{
"status": "suspended",
"archived": false,
"virtualAgentEnabled": false,
"isPrivate": true
}Regras importantes
- Envie somente os campos que deseja alterar.
- status aceita open ou suspended. Fechamento direto não é permitido.
- archived: true resolve e arquiva o ticket.
- isPrivate: true bloqueia novos acessos pelo link público.
Exemplo com cURL
curl -X PATCH "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID" \
-H "Authorization: Bearer lup_seu_token" \
-H "Content-Type: application/json" \
-d '{
"status": "suspended",
"archived": false,
"virtualAgentEnabled": false,
"isPrivate": true
}'Resposta
{
"_id": "6a29f9299be71546096a1461",
"status": "suspended",
"isPrivate": true,
"virtualAgentEnabled": false
}/v1/bots/:botId/tickets/:ticketIdQuando usar
Use somente quando o ticket não deve mais aparecer na operação.
Permissão
Somente o dono do bot.
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Regras importantes
- A exclusão é lógica: o ticket deixa de ser acessível, mas os dados permanecem armazenados.
- Baixe o transcript antes da exclusão quando precisar preservar uma cópia externa.
Exemplo com cURL
curl -X DELETE "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"success": true
}Mensagens do Bot
3/v1/bots/:botId/tickets/:ticketId/messagesQuando usar
Use para espelhar conversas, criar auditorias ou montar uma interface própria.
Permissão
view
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/messages" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"_id": "message-id",
"authorId": "customer_9281",
"authorName": "Marina",
"authorRole": "customer",
"content": "Preciso de ajuda com a cobrança.",
"attachments": [],
"readBy": ["customer_9281"],
"createdAt": "2026-06-14T18:00:00.000Z"
}
]/v1/bots/:botId/tickets/:ticketId/messagesQuando usar
Use para enviar mensagens de clientes, visitantes ou atendentes a partir do seu sistema.
Permissão
view para customer/guest. reply para mensagens com authorRole agent.
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Corpo da requisição
{
"content": "Consultei o pedido e encontrei a cobrança.",
"authorId": "agent_42",
"authorName": "Equipe financeira",
"authorRole": "agent",
"authorAvatarUrl": "https://example.com/agent.png",
"attachments": [
{
"name": "comprovante.pdf",
"type": "application/pdf",
"size": 183204,
"dataUrl": "data:application/pdf;base64,..."
}
]
}Regras importantes
- content aceita até 4.000 caracteres.
- Até 4 anexos em data URL, com no máximo 2 MB cada.
- Quando um atendente responde, a IA é desativada automaticamente no ticket.
- Mensagens de customer e guest podem disparar a IA se ela estiver ativa.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/messages" \
-H "Authorization: Bearer lup_seu_token" \
-H "Content-Type: application/json" \
-d '{
"content": "Consultei o pedido e encontrei a cobrança.",
"authorId": "agent_42",
"authorName": "Equipe financeira",
"authorRole": "agent",
"authorAvatarUrl": "https://example.com/agent.png",
"attachments": [
{
"name": "comprovante.pdf",
"type": "application/pdf",
"size": 183204,
"dataUrl": "data:application/pdf;base64,..."
}
]
}'Resposta
{
"_id": "message-id",
"authorName": "Equipe financeira",
"authorRole": "agent",
"content": "Consultei o pedido e encontrei a cobrança.",
"readBy": ["agent_42"]
}/v1/bots/:botId/tickets/:ticketId/transcriptQuando usar
Use para auditoria, backup ou anexação em outro sistema antes de excluir um ticket.
Permissão
view
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/transcript" \
-H "Authorization: Bearer lup_seu_token"Resposta
Resposta HTML com Content-Disposition: attachment; filename="lineup-ticket-transcript.html".Participantes do Bot
2/v1/bots/:botId/tickets/:ticketId/participantsQuando usar
Use quando outro cliente, colaborador ou atendente precisar fazer parte do atendimento.
Permissão
manage_people
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Corpo da requisição
{
"id": "customer_1042",
"name": "Rafael",
"avatarUrl": "https://example.com/rafael.png",
"role": "customer"
}Regras importantes
- id é obrigatório e deve ser estável no seu sistema.
- role aceita customer, agent ou guest.
- Enviar um ID existente atualiza nome, avatar, papel e último acesso.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/participants" \
-H "Authorization: Bearer lup_seu_token" \
-H "Content-Type: application/json" \
-d '{
"id": "customer_1042",
"name": "Rafael",
"avatarUrl": "https://example.com/rafael.png",
"role": "customer"
}'Resposta
{
"_id": "ticket-id",
"participants": [
{
"id": "customer_1042",
"name": "Rafael",
"role": "customer"
}
]
}/v1/bots/:botId/tickets/:ticketId/participants/:participantIdQuando usar
Use quando uma pessoa não deve mais participar ou acessar o atendimento.
Permissão
manage_people
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
participantIdID informado ao adicionar a pessoa.
Exemplo com cURL
curl -X DELETE "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/participants/PARTICIPANT_ID" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"_id": "ticket-id",
"participants": []
}IA do Bot
3/v1/bots/:botId/tickets/:ticketId/tool-requestsQuando usar
Use para construir uma fila externa de aprovações humanas.
Permissão
view
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
Exemplo com cURL
curl -X GET "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/tool-requests" \
-H "Authorization: Bearer lup_seu_token"Resposta
[
{
"_id": "request-id",
"toolName": "Consultar pedido",
"reason": "O cliente perguntou sobre o pedido 9281.",
"input": { "orderId": "9281" },
"status": "pending"
}
]/v1/bots/:botId/tickets/:ticketId/tool-requests/:requestId/approveQuando usar
Use quando o bot estiver no modo Aprovar por mim e seu sistema tiver confirmado a ação.
Permissão
reply
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
requestIdID da solicitação pendente.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/tool-requests/REQUEST_ID/approve" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"_id": "request-id",
"status": "executed",
"approvedBy": "user-id",
"result": "Pedido encontrado."
}/v1/bots/:botId/tickets/:ticketId/tool-requests/:requestId/rejectQuando usar
Use quando a ação for sensível, desnecessária ou estiver com dados incorretos.
Permissão
reply
Parâmetros da URL
botIdID interno do bot.
ticketIdID interno do ticket.
requestIdID da solicitação pendente.
Exemplo com cURL
curl -X POST "https://api.lnup.pro/v1/bots/BOT_ID/tickets/TICKET_ID/tool-requests/REQUEST_ID/reject" \
-H "Authorization: Bearer lup_seu_token"Resposta
{
"_id": "request-id",
"status": "rejected",
"approvedBy": "user-id"
}