Overview
The TenantCore API exposes TenantCore-defined operations for resources owned by your account. It is not a generic Microsoft 365, DNS-provider, or sending-tool proxy. The authorization chain is always:API key → TenantCore account UUID → TenantCore-owned resource → allowed TenantCore action → provider
Today you can use /v1 to:
- obtain TenantCore’s signed Microsoft consent URL for adding a new BYOT tenant to your account
- list and inspect TenantCore-owned tenants
- synchronize connected tenants
- manage domains that belong to those tenants
- create and manage TenantCore mailboxes on owned domains
- configure Exchange-enforced sending-limit policy
- create/check sending-tool integrations and connect TenantCore mailboxes through provider OAuth
- inspect mailbox usage and enforcement state
Base URL
Resource ownership
Resource management endpoints require an existing TenantCore resource. Supplying a Microsoft tenant GUID, domain name, mailbox address, or provider identifier does not grant access by itself. A valid target is either:- a BYOT tenant already connected to the authenticated TenantCore account, or
- a TenantCore-managed tenant already assigned to that account.
Request format
The API accepts and returns JSON. Every request requires:POST, PUT, PATCH, and DELETE request also requires:
Response and request IDs
Successful responses are JSON objects. Every/v1 response includes:
Rate and capacity protection
TenantCore rate-limits the public API by authenticated account and uses tighter limits for Microsoft/provider-heavy operations. It also enforces per-process concurrency ceilings and a maximum request-body size. See Authentication for the current defaults and response headers. These controls protect both TenantCore and upstream systems from accidental loops, runaway automation, and abusive traffic.Connecting a BYOT tenant
GET /v1/tenants/connect-url returns a signed TenantCore Microsoft admin-consent URL bound to the authenticated account. A Global Administrator approves the TenantCore application in Microsoft’s UI. After the callback succeeds, the tenant becomes a TenantCore-owned BYOT resource and normal API operations may act on it.
The API does not accept an arbitrary tenant GUID and begin managing it directly.
Infrastructure notes
- Exchange and Microsoft Graph changes can require propagation time.
- DNS results reflect what TenantCore can verify publicly/provider-side at the time of the request.
- API operations never bypass TenantCore ownership, entitlement, or plan limits.
- Server-side provider details and secrets are not returned in generic error responses; use
X-Request-IDfor support correlation.
Getting started
- Activate TenantCore Complete (or use an eligible grandfathered API entitlement).
- Open the API page in TenantCore and create a key.
- Copy the key immediately; it is shown once and cannot be revealed later.
- Send it as
Authorization: Bearer <your_api_key>. - For every write, generate an
Idempotency-Keyand retain it until you know whether that logical operation completed. - Start with
GET /v1/tenantsto discover resources already owned by the account. - If you need to add BYOT infrastructure, use
GET /v1/tenants/connect-urland complete the signed TenantCore consent flow.