← All API sections

Sub-Accounts

Create and manage sub-accounts under a parent account's quota pool

7 endpoints

Endpoints

MethodPathDescription
GET/v1/accountsGET /v1/accounts
POST/v1/accountsPOST /v1/accounts
GET/v1/accounts/{id}GET /v1/accounts/{id}
DELETE/v1/accounts/{id}DELETE /v1/accounts/{id}
PATCH/v1/accounts/{id}PATCH /v1/accounts/{id}
GET/v1/accounts/{id}/analyticsGET /v1/accounts/{id}/analytics
POST/v1/accounts/{id}/api-keysPOST /v1/accounts/{id}/api-keys

GET /v1/accounts

GET /v1/accounts

Parameters

NameInTypeRequiredDescription
pagequery`integernull`No
per_pagequery`integernull`No

Responses

StatusDescription
200Sub-accounts owned by this account
401Unauthorized

Example

curl -X GET https://api.euromail.dev/v1/accounts \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.listAccounts();
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.list_accounts()
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.list_accounts().await?;
client := euromail.NewClient("em_live_...")

result, err := client.ListAccounts(ctx)

POST /v1/accounts

POST /v1/accounts

Request Body

FieldTypeRequiredDescription
emailstringYes
monthly_quotaintegerYes
namestringYes
passwordstringYes

Responses

StatusDescription
201Sub-account created
401Unauthorized
404Parent account not found
409An account with this email already exists
422Invalid name/email/password/quota, or the quota pool is exhausted

Example

curl -X POST https://api.euromail.dev/v1/accounts \
  -H "X-EuroMail-Api-Key: em_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]", "monthly_quota": 0, "name": "example.com", "password": "..." }'
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.createAccount({
    email: "[email protected]",
    monthly_quota: 0,
    name: "example.com",
    password: "...",
  });
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.create_account(
    email="[email protected]",
    monthly_quota=0,
    name="example.com",
    password="...",
)
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.create_account(&CreateAccountParams {
    email: "[email protected]".into(),
    monthly_quota: 0,
    name: "example.com".into(),
    password: "...".into(),
    ..Default::default()
}).await?;
client := euromail.NewClient("em_live_...")

result, err := client.CreateAccount(ctx, euromail.CreateAccountParams{
    Email: "[email protected]",
    MonthlyQuota: 0,
    Name: "example.com",
    Password: "...",
})

GET /v1/accounts/{id}

GET /v1/accounts/{id}

Parameters

NameInTypeRequiredDescription
idpathstringYesSub-account id

Responses

StatusDescription
200The sub-account
401Unauthorized
404Sub-account not found

Example

curl -X GET https://api.euromail.dev/v1/accounts/{id} \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.getAccount("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.get_account("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.get_account("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.GetAccount(ctx, "id_...")

DELETE /v1/accounts/{id}

DELETE /v1/accounts/{id}

Parameters

NameInTypeRequiredDescription
idpathstringYesSub-account id

Responses

StatusDescription
204Sub-account deleted
401Unauthorized
404Sub-account not found

Example

curl -X DELETE https://api.euromail.dev/v1/accounts/{id} \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.deleteAccount("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.delete_account("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.delete_account("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.DeleteAccount(ctx, "id_...")

PATCH /v1/accounts/{id}

PATCH /v1/accounts/{id}

Parameters

NameInTypeRequiredDescription
idpathstringYesSub-account id

Request Body

FieldTypeRequiredDescription
is_active`booleannull`No
monthly_quota`integernull`No
name`stringnull`No

Responses

StatusDescription
200Sub-account updated
401Unauthorized
404Sub-account not found
422Invalid quota, or the quota pool is exhausted

Example

curl -X PATCH https://api.euromail.dev/v1/accounts/{id} \
  -H "X-EuroMail-Api-Key: em_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.updateAccount({});
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.update_account(
)
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.update_account(&UpdateAccountParams {
    ..Default::default()
}).await?;
client := euromail.NewClient("em_live_...")

result, err := client.UpdateAccount(ctx, euromail.UpdateAccountParams{
})

GET /v1/accounts/{id}/analytics

GET /v1/accounts/{id}/analytics

Parameters

NameInTypeRequiredDescription
idpathstringYesSub-account id
periodquery`stringnull`No
fromquery`stringnull`No
toquery`stringnull`No

Responses

StatusDescription
200Analytics summary for the sub-account
401Unauthorized
404Sub-account not found
422Invalid period

Example

curl -X GET https://api.euromail.dev/v1/accounts/{id}/analytics \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.getAccountDetail("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.get_account_detail("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.get_account_detail("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.GetAccountDetail(ctx, "id_...")

POST /v1/accounts/{id}/api-keys

POST /v1/accounts/{id}/api-keys

Parameters

NameInTypeRequiredDescription
idpathstringYesSub-account id

Request Body

FieldTypeRequiredDescription
namestringYes
scopesstring[]No

Responses

StatusDescription
201API key created for the sub-account (raw key returned only at creation)
401Unauthorized
404Sub-account not found
422Invalid name or scope

Example

curl -X POST https://api.euromail.dev/v1/accounts/{id}/api-keys \
  -H "X-EuroMail-Api-Key: em_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "name": "example.com" }'
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.getAccountDetail({
    name: "example.com",
  });
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.get_account_detail(
    name="example.com",
)
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.get_account_detail(&GetAccountDetailParams {
    name: "example.com".into(),
    ..Default::default()
}).await?;
client := euromail.NewClient("em_live_...")

result, err := client.GetAccountDetail(ctx, euromail.GetAccountDetailParams{
    Name: "example.com",
})