SmartCloud
Automatize a gestão de domínios, hosting, email e segurança directamente a partir do seu código.
A SmartCloud API REST permite-lhe gerir todos os seus serviços programaticamente — desde o registo de domínios ao aprovisionamento de servidores VPS, passando por caixas de email, certificados SSL e muito mais.
Registe, transfira e gerencie domínios .ao e internacionais
Crie e escale servidores em segundos via API
Emita certificados SSL e gerencie firewalls
Todas as chamadas à API devem usar o seguinte URL base:
https://api.smartcloud.ao/v1Verifique a disponibilidade da API sem autenticação. Útil para monitorização e alertas.
GET https://api.smartcloud.ao/ping
Resposta imediata, sem base de dados. Retorna 200 e { "ok": true, "ts": "..." }.
curl -s https://api.smartcloud.ao/pingGET https://api.smartcloud.ao/health
Estado completo: BD, memória, SMTP, Stripe, AppyPay, etc. Retorna JSON com status (healthy | degraded | unhealthy) e checks.
curl -s https://api.smartcloud.ao/healthA SmartCloud API usa API Keys para autenticar os pedidos. Inclua a chave no cabeçalho Authorization de cada pedido.
⚠️ Nunca exponha a sua API key no código público ou no front-end. Use variáveis de ambiente no servidor.
Authorization: Bearer sc_xxxxxxxxxxxxxxxxxxxxcurl https://api.smartcloud.ao/v1/domains \
-H "Authorization: Bearer sc_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json"O pedido foi concluído com sucesso.
O recurso foi criado com sucesso.
Parâmetros inválidos ou em falta.
API key inválida, expirada ou ausente.
Sem permissão para este recurso.
O recurso solicitado não existe.
O recurso já existe (e.g., domínio já registado).
Rate limit excedido. Aguarde antes de tentar novamente.
Erro inesperado no servidor SmartCloud.
Os limites aplicam-se por API key. Os cabeçalhos de resposta indicam o estado atual do rate limit.
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 287
X-RateLimit-Reset: 1709254800
Retry-After: 60/v1/domainsRetorna todos os domínios associados à sua conta, com informações de expiração, estado DNS e configurações de renovação automática.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| page | integer | não | Número da página (padrão: 1) |
| per_page | integer | não | Resultados por página, máx. 100 (padrão: 20) |
| status | string | não | Filtrar por estado: active | expired | pending |
| tld | string | não | Filtrar por TLD, e.g. ".ao" ou ".com" |
curl https://api.smartcloud.ao/v1/domains \
-H "Authorization: Bearer sc_xxxxxxxxxxxx"{
"domains": [
{
"id": "dom_9xkL2mNp",
"name": "meusite.ao",
"status": "active",
"expires_at": "2026-03-01T00:00:00Z",
"auto_renew": true,
"dns_status": "propagated",
"created_at": "2024-03-01T10:00:00Z"
}
],
"meta": {
"total": 12,
"page": 1,
"per_page": 20
}
}/v1/hosting/plansLista todos os planos de hosting disponíveis com especificações de armazenamento, largura de banda e funcionalidades incluídas.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| type | string | não | Tipo: shared | wordpress | woocommerce | agencies |
| currency | string | não | Moeda: AOA (padrão) | USD | EUR |
curl "https://api.smartcloud.ao/v1/hosting/plans?type=wordpress" \
-H "Authorization: Bearer sc_xxxxxxxxxxxx"{
"plans": [
{
"id": "plan_wp_starter",
"name": "WordPress Starter",
"type": "wordpress",
"storage_gb": 10,
"bandwidth_gb": 100,
"domains": 1,
"ssl": true,
"price": {
"monthly_aoa": 15000,
"annual_aoa": 144000
}
}
]
}/v1/cloud/serversProvisiona um novo servidor VPS ou Cloud com as especificações escolhidas. O servidor fica disponível em menos de 60 segundos.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| plan_id | string | sim | ID do plano VPS/Cloud a aprovisionar |
| region | string | sim | Região: ao-luanda | eu-west | us-east |
| os | string | sim | Sistema operativo: ubuntu-22.04 | debian-12 | centos-9 |
| hostname | string | não | Nome do servidor (gerado automaticamente se omitido) |
| ssh_keys | array | não | IDs das chaves SSH a instalar no servidor |
| backups | boolean | não | Activar backups automáticos diários (padrão: false) |
curl -X POST https://api.smartcloud.ao/v1/cloud/servers \
-H "Authorization: Bearer sc_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "vps_2cpu_4gb",
"region": "ao-luanda",
"os": "ubuntu-22.04",
"hostname": "web-prod-01"
}'{
"server": {
"id": "srv_7tKmX3nQ",
"hostname": "web-prod-01",
"status": "provisioning",
"ip_address": "196.46.xx.xx",
"region": "ao-luanda",
"os": "ubuntu-22.04",
"plan": {
"cpu": 2,
"ram_gb": 4,
"disk_gb": 80,
"bandwidth_tb": 5
},
"created_at": "2026-02-28T18:05:00Z",
"ready_at": "2026-02-28T18:06:00Z"
}
}/v1/email/mailboxesCria uma nova caixa de email profissional num domínio verificado na sua conta SmartCloud.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| domain | string | sim | Domínio onde criar a caixa (deve estar na sua conta) |
| username | string | sim | Nome da caixa (sem @dominio). E.g. "info" |
| password | string | sim | Palavra-passe da caixa (mín. 12 caracteres) |
| quota_mb | integer | não | Quota em MB (padrão: 5120 = 5 GB) |
| spam_filter | boolean | não | Activar filtro anti-spam com IA (padrão: true) |
curl -X POST https://api.smartcloud.ao/v1/email/mailboxes \
-H "Authorization: Bearer sc_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"domain": "meusite.ao",
"username": "info",
"password": "SuperSecret123!",
"quota_mb": 10240,
"spam_filter": true
}'{
"mailbox": {
"id": "mbx_4pRnY8vL",
"address": "[email protected]",
"domain": "meusite.ao",
"quota_mb": 10240,
"used_mb": 0,
"spam_filter": true,
"status": "active",
"imap": "mail.smartcloud.ao:993",
"smtp": "mail.smartcloud.ao:587",
"created_at": "2026-02-28T18:07:00Z"
}
}/v1/ssl/certificatesSolicita e emite um certificado SSL/TLS para um domínio verificado. Certificados DV são emitidos em segundos por Let's Encrypt ou ZeroSSL.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| domain | string | sim | Domínio para o certificado (e.g. "meusite.ao") |
| type | string | sim | Tipo: dv | ov | ev | wildcard |
| auto_renew | boolean | não | Renovar automaticamente 30 dias antes de expirar (padrão: true) |
curl -X POST https://api.smartcloud.ao/v1/ssl/certificates \
-H "Authorization: Bearer sc_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"domain": "meusite.ao", "type": "dv", "auto_renew": true}'{
"certificate": {
"id": "ssl_2wMzP6jK",
"domain": "meusite.ao",
"type": "dv",
"status": "issued",
"issuer": "Let's Encrypt",
"valid_from": "2026-02-28T00:00:00Z",
"valid_until": "2026-05-29T00:00:00Z",
"auto_renew": true
}
}/v1/ordersCria uma nova encomenda para qualquer produto SmartCloud. Retorna um link de pagamento e o ID da encomenda para acompanhamento.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| product_id | string | sim | ID do produto/plano a encomendar |
| quantity | integer | não | Quantidade (padrão: 1) |
| period | string | não | Período: monthly | annually (padrão: monthly) |
| payment_method | string | sim | Método: appypay | kwik | stripe |
| addons | array | não | Lista de IDs de add-ons adicionais |
curl -X POST https://api.smartcloud.ao/v1/orders \
-H "Authorization: Bearer sc_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"product_id": "plan_wp_starter",
"period": "annually",
"payment_method": "appypay"
}'{
"order": {
"id": "ord_8hTvQ5xN",
"status": "pending_payment",
"product": "WordPress Starter (Anual)",
"total_aoa": 144000,
"payment_url": "https://pay.smartcloud.ao/ord_8hTvQ5xN",
"expires_at": "2026-02-28T19:07:00Z"
}
}Todos os erros retornam um objecto JSON com o campo error.
{
"error": {
"code": "domain_not_found",
"message": "O domínio especificado não existe na sua conta.",
"status": 404,
"request_id": "req_5yKmX3nQpL"
}
}Todos os endpoints de lista suportam paginação via parâmetros page e per_page. O campo meta da resposta inclui a contagem total.
curl "https://api.smartcloud.ao/v1/domains?page=2&per_page=50" \
-H "Authorization: Bearer sc_xxxxxxxxxxxx"Configure webhooks para receber notificações em tempo real sobre eventos como pagamentos concluídos, domínios a expirar ou servidores prontos.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| order.completed | event | não | Encomenda paga e aprovisionada com sucesso |
| domain.expiring | event | não | Domínio expira em 30 / 14 / 7 / 1 dia(s) |
| server.ready | event | não | Servidor VPS/Cloud pronto para uso |
| ssl.renewed | event | não | Certificado SSL renovado automaticamente |
| payment.failed | event | não | Tentativa de pagamento falhou |
{
"event": "order.completed",
"timestamp": "2026-02-28T18:10:00Z",
"data": {
"order_id": "ord_8hTvQ5xN",
"product": "WordPress Starter",
"status": "active"
},
"signature": "sha256=abc123..."
}