Self-service create API key (cliente, con cap por plan)
const url = 'https://api.mailerdash.com/v1/client/keys';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"label":"example","domain_access":"all","allowed_from_domains":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.mailerdash.com/v1/client/keys \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "label": "example", "domain_access": "all", "allowed_from_domains": [ "example" ] }'Cliente crea una nueva API key vinculada a su cuenta. Cap por package transactional (packages.max_api_keys — Free=2, Starter=5, Pro=20). Token devuelto UNA SOLA VEZ en la response — el cliente debe copiarlo al crear. Sin password re-auth (v0.9.0+, crear key es low-friction).
Authorizations
Sección titulada «Authorizations »Request Body required
Sección titulada «Request Body required »object
Display name de la key, ej “production-app”
‘all’ (default): hereda en vivo todos los dominios verificados de la cuenta. ‘restricted’: opt-in least-privilege — solo los dominios listados en allowed_from_domains, con grant explícito.
Dominios a autorizar (grant explícito). Solo aplica si domain_access=restricted.
Responses
Sección titulada « Responses »Key creada
object
ONE-TIME. Copiar inmediato — no se vuelve a mostrar.
Example
{ "domain_access": "all"}Validation error (label vacío, domain_access inválido, dominios inválidos)
Max_api_keys_exceeded — cap del plan alcanzado