curl https://api.sendnomi.com/v1/messages \
-H "Authorization: Bearer sn_live_•••" \
-H "Content-Type: application/json" \
-d '{
"from": "[email protected]",
"to": "[email protected]",
"subject": "Bienvenido",
"html": "<h1>Hola</h1>"
}' Una API REST. Un cliente en cualquier lenguaje.
Cada endpoint está descrito en una especificación OpenAPI 3.1. Genera un cliente con tipado seguro en el lenguaje que prefieras, o llama a la API REST directamente con las herramientas que ya usas. La autenticación con clave de API, la idempotency-key y el versionado forman parte del propio contrato.
const res = await fetch(
"https://api.sendnomi.com/v1/messages",
{
method: "POST",
headers: {
Authorization: "Bearer sn_live_•••",
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "[email protected]",
to: "[email protected]",
subject: "Bienvenido",
html: "<h1>Hola</h1>",
}),
},
); import requests
requests.post(
"https://api.sendnomi.com/v1/messages",
headers={"Authorization": "Bearer sn_live_•••"},
json={
"from": "[email protected]",
"to": "[email protected]",
"subject": "Bienvenido",
"html": "<h1>Hola</h1>",
},
) # Contrato de la API
GET https://api.sendnomi.com/v1/openapi.json
# Impórtalo en el generador que prefieras
# y obtén un cliente con tipado seguro
# en tu lenguaje — el mismo contrato
# para todas las superficies. Un cliente en tu lenguaje
Importa la especificación OpenAPI 3.1 en el generador que prefieras y obtén un cliente con tipado seguro. El mismo contrato de la API se traduce directamente a:
- TypeScript
- Python
- PHP
- Go
- Ruby
- Java
- .NET
- Rust
Todas las superficies llaman a los mismos endpoints con los mismos nombres de parámetros — cambiar de lenguaje no cambia el contrato. Autenticación con clave de API (Bearer), idempotency-key en las peticiones POST y versionado en la URL: idéntico en todas partes.