SDK oficial em Node.js para a Mail & Render API da ACQ. Oferece funcionalidades para renderização de HTML em imagens e gerenciamento de emails temporários.
npm install acq-sdk
ou
yarn add acq-sdk
ou
pnpm add acq-sdk
import { AcqClient } from "acq-sdk";
const client = new AcqClient({
apiKey: "sua-api-key-aqui",
// Opcionais:
baseUrl: "https://api.acq.lat", // URL base customizada
timeout: 30000, // Timeout em milissegundos
});
const emails = await client.mails.list();
console.log("Seus emails:", emails);
// Retorna: [{ email: 'test@acq.lat', expiraEm: '2025-07-16T23:37:29.111Z' }]
// Email com domínio padrão
const novoEmail = await client.mails.create();
console.log("Novo email:", novoEmail.mail);
// Email com domínio específico
const emailCustom = await client.mails.create({
domain: "acq.lat",
});
console.log("Email customizado:", emailCustom.mail);
const mensagens = await client.mails.getMessages({
mail: "seu-email@acq.lat",
});
console.log(`Email: ${mensagens.email}`);
console.log(`Total de mensagens: ${mensagens.total}`);
console.log("Mensagens:", mensagens.messages);
const resultado = await client.mails.delete("email@acq.lat");
console.log("Email deletado:", resultado.deleted_email);
const resultado = await client.mails.deleteMessages("email@acq.lat");
console.log(`${resultado.deleted_count} mensagens deletadas`);
import { writeFileSync } from "fs";
const html = `
<!DOCTYPE html>
<html>
<head>
<style>
body {
font-family: Arial, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 40px;
text-align: center;
}
.card {
background: rgba(255, 255, 255, 0.1);
border-radius: 15px;
padding: 30px;
backdrop-filter: blur(10px);
}
</style>
</head>
<body>
<div class="card">
<h1>🚀 Minha Imagem</h1>
<p>Gerada com ACQ SDK!</p>
</div>
</body>
</html>
`;
const imagemBuffer = await client.render.htmlToImage({ html });
// Salvar como arquivo
writeFileSync("minha-imagem.png", imagemBuffer);
// Ou usar em uma aplicação web
// res.set('Content-Type', 'image/png');
// res.send(imagemBuffer);
O SDK fornece tipos específicos de erro para diferentes situações:
import { AcqApiError, AcqValidationError, AcqConfigError } from "acq-sdk";
try {
await client.mails.create();
} catch (error) {
if (error instanceof AcqApiError) {
console.error("Erro da API:", error.message);
console.error("Código:", error.code);
console.error("Status HTTP:", error.status);
} else if (error instanceof AcqValidationError) {
console.error("Erro de validação:", error.message);
} else if (error instanceof AcqConfigError) {
console.error("Erro de configuração:", error.message);
}
}
import express from "express";
import { AcqClient } from "acq-sdk";
const app = express();
const client = new AcqClient({ apiKey: process.env.ACQ_API_KEY! });
app.use(express.json());
// Endpoint para gerar imagem
app.post("/gerar-imagem", async (req, res) => {
try {
const { html } = req.body;
const imagem = await client.render.htmlToImage({ html });
res.set("Content-Type", "image/png");
res.send(imagem);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// Endpoint para criar email temporário
app.post("/criar-email", async (req, res) => {
try {
const email = await client.mails.create();
res.json(email);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
app.listen(3000, () => {
console.log("Servidor rodando na porta 3000");
});
import { AcqClient } from "acq-sdk";
import { writeFileSync } from "fs";
async function gerarRelatorio() {
const client = new AcqClient({ apiKey: process.env.ACQ_API_KEY! });
// Buscar dados
const emails = await client.mails.list();
// Gerar HTML do relatório
const html = `
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial; padding: 20px; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px; border: 1px solid #ddd; text-align: left; }
th { background-color: #f4f4f4; }
</style>
</head>
<body>
<h1>Relatório de Emails</h1>
<table>
<tr><th>Email</th><th>Expira em</th></tr>
${emails
.map(
email => `
<tr>
<td>${email.email}</td>
<td>${new Date(email.expiraEm).toLocaleString()}</td>
</tr>
`
)
.join("")}
</table>
<p>Total: ${emails.length} emails</p>
</body>
</html>
`;
// Gerar imagem do relatório
const imagem = await client.render.htmlToImage({ html });
writeFileSync(`relatorio-${Date.now()}.png`, imagem);
console.log("Relatório gerado com sucesso!");
}
gerarRelatorio().catch(console.error);
// .env
ACQ_API_KEY=sua-api-key
ACQ_BASE_URL=https://api.acq.lat
ACQ_TIMEOUT=30000
// app.ts
import { AcqClient } from 'acq-sdk';
const client = new AcqClient({
apiKey: process.env.ACQ_API_KEY!,
baseUrl: process.env.ACQ_BASE_URL,
timeout: parseInt(process.env.ACQ_TIMEOUT || '30000')
});
import { AcqClient } from "acq-sdk";
const config = {
development: {
apiKey: process.env.ACQ_DEV_API_KEY!,
baseUrl: "https://dev-api.acq.lat",
},
production: {
apiKey: process.env.ACQ_PROD_API_KEY!,
baseUrl: "https://api.acq.lat",
},
};
const client = new AcqClient(config[process.env.NODE_ENV || "development"]);
O SDK é totalmente tipado. Principais interfaces:
interface AcqClientConfig {
apiKey: string;
baseUrl?: string;
timeout?: number;
}
interface EmailInfo {
email: string;
expiraEm: string;
}
interface EmailMessage {
id: string;
from: string;
to: string;
subject: string;
body: string;
html_body?: string;
attachments?: EmailAttachment[];
received_at: string;
}
interface RenderOptions {
html: string;
}
git checkout -b feature/nova-funcionalidade
git commit -m 'Adiciona nova funcionalidade'
git push origin feature/nova-funcionalidade
MIT © ACQ Team
Feito com ❤️ pela equipe ACQ