Accounts and sub-accounts

An account holds maps, content catalogs, links, kiosks, users and API keys. A sub-account is a separate account owned by yours: its own maps and content, its own users, one bill. Use one per client, event, tenant or site. See Sub-accounts and users.

A request applies to the key's own account, or to the sub-account named in the Waygo-Account header. Scopes: accounts:read, accounts:write, accounts:delete.

ENDPOINTS

GET    /accounts/v1
PUT    /accounts/v1
POST   /accounts/v1
GET    /accounts/v1/sub-accounts
DELETE /accounts/v1
POST   /accounts/v1/users
GET    /accounts/v1/users/:user_id
DELETE /accounts/v1/users/:user_id

The account object

  • Name
    account_id
    Type
    string
    Description
    The account's ID (the value of the Waygo-Account header).
  • Name
    account_name
    Type
    string
    Description
    Its name.
  • Name
    account_type
    Type
    'Enterprise' | 'Business' | 'Vendor'
    Description
    Its plan type. Sub-accounts are Business or Vendor.
  • Name
    contact_info
    Type
    object | null
    Description
    Free-form contact details.
  • Name
    is_active
    Type
    boolean
    Description
    Whether the account is active.
  • Name
    features
    Type
    object
    Description
    Which optional features are on, for example reservations and connections.
  • Name
    limits
    Type
    object
    Description
    The account's publish allowance: { publish: { content_publishes_per_day, min_interval_seconds } }.
  • Name
    created_at / updated_at / last_active_at
    Type
    timestamp
    Description
    Timestamps.

The account object

{
  "account_id": "dash-dev-acct",
  "account_name": "Acme Expo Team",
  "account_type": "Business",
  "contact_info": { "email": "ops@acme.example" },
  "is_active": true,
  "features": { "reservations": true, "connections": true },
  "limits": { "publish": { "content_publishes_per_day": 12, "min_interval_seconds": 600 } },
  "created_at": "2026-07-01T09:00:00",
  "updated_at": "2026-09-18T19:44:21",
  "deleted_at": null,
  "last_active_at": "2026-09-18T19:44:21"
}

GET/accounts/v1

Retrieve your account

The account the request applies to.

GET /accounts/v1

API KEY SCOPE
accounts:read
curl https://api.waygomaps.com/accounts/v1 \
  -H "Waygo-API-Key: $WAYGO_API_KEY"

PUT/accounts/v1

Update your account

account_name and contact_info. Only the fields you send change.

PUT /accounts/v1

API KEY SCOPE
accounts:write
curl -X PUT https://api.waygomaps.com/accounts/v1 \
  -H "Waygo-API-Key: $WAYGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "account_name": "Acme Events", "contact_info": { "email": "ops@acme.example" } }'

POST/accounts/v1

Create a sub-account

A new account owned by yours. Your key works on it with the Waygo-Account header from then on.

Body

  • Name
    account_name
    Type
    string
    Description
    Required, up to 50 characters.
  • Name
    account_type
    Type
    'Business' | 'Vendor'
    Description
    The sub-account's type. An Enterprise account creates Business or Vendor sub-accounts; a Business account creates Vendor ones.
  • Name
    contact_info
    Type
    object
    Description
    Optional.

POST /accounts/v1

API KEY SCOPE
accounts:write
curl -X POST https://api.waygomaps.com/accounts/v1 \
  -H "Waygo-API-Key: $WAYGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "account_name": "Acme Events EMEA", "account_type": "Business" }'

Response (201)

{ "account_id": "3jfhhf99h293y4f93yyfe239y9eyf9eh", "account_name": "Acme Events EMEA", "account_type": "Business", "is_active": true, "…": "…" }

GET/accounts/v1/sub-accounts

List sub-accounts

The sub-accounts of the account, with their number of maps and users. Paged with skip and limit.

GET /accounts/v1/sub-accounts

API KEY SCOPE
accounts:read
curl "https://api.waygomaps.com/accounts/v1/sub-accounts?limit=20" \
  -H "Waygo-API-Key: $WAYGO_API_KEY"

Response

{
  "sub_accounts": [
    { "account_id": "3jfhhf99…", "account_name": "Acme Events EMEA", "account_type": "Business", "is_active": true, "num_maps": 3, "num_users": 2, "features": { "reservations": false, "connections": true }, "…": "…" }
  ],
  "total": 1, "skip": 0, "limit": 20
}

DELETE/accounts/v1

Delete an account

Deletes the account the request applies to (with Waygo-Account, a sub-account) and everything in it.

DELETE /accounts/v1

API KEY SCOPE
accounts:write
curl -X DELETE https://api.waygomaps.com/accounts/v1 \
  -H "Waygo-API-Key: $WAYGO_API_KEY" \
  -H "Waygo-Account: 3jfhhf99h293y4f93yyfe239y9eyf9eh"

POST/accounts/v1/users

Add a user

Give a user (by email) a role on the account. A user who does not exist yet is invited by email.

Body

  • Name
    user_id
    Type
    string
    Description
    The user's email address.
  • Name
    roles
    Type
    string[]
    Description
    One or more of Owner, Admin, editor, viewer.

POST /accounts/v1/users

API KEY SCOPE
accounts:write
curl -X POST https://api.waygomaps.com/accounts/v1/users \
  -H "Waygo-API-Key: $WAYGO_API_KEY" \
  -H "Waygo-Account: 3jfhhf99h293y4f93yyfe239y9eyf9eh" \
  -H "Content-Type: application/json" \
  -d '{ "user_id": "jordan@acme.example", "roles": ["editor"] }'

Response

201 Created

GET/accounts/v1/users/:user_id

A user's roles

Every account the user has a role on, with the roles.

GET /accounts/v1/users/:user_id

API KEY SCOPE
accounts:read
curl https://api.waygomaps.com/accounts/v1/users/jordan@acme.example \
  -H "Waygo-API-Key: $WAYGO_API_KEY"

Response

{
  "user_id": "jordan@acme.example",
  "accounts": [
    { "account_id": "3jfhhf99…", "account_name": "Acme Events EMEA", "account_type": "Business", "is_active": true, "features": { "…": "…" }, "roles": ["editor"] }
  ]
}

DELETE/accounts/v1/users/:user_id

Remove a user

Removes every role the user has on the account.

DELETE /accounts/v1/users/:user_id

API KEY SCOPE
accounts:delete
curl -X DELETE https://api.waygomaps.com/accounts/v1/users/jordan@acme.example \
  -H "Waygo-API-Key: $WAYGO_API_KEY" \
  -H "Waygo-Account: 3jfhhf99h293y4f93yyfe239y9eyf9eh"

Response

204 No Content