Authentication
Every request to the Platform API carries two required headers.
| Header | Required | Purpose |
|---|---|---|
API-Key | ✅ | Your platform API key, from the developer console. |
X-TenantID | ✅ | The organization (workspace) the request runs in. |
bash
curl "$ME_BASE/voice/providers" \
-H "API-Key: $ME_API_KEY" \
-H "X-TenantID: $ME_TENANT"Keep credentials server-side
API-Key is a secret. Never embed it in a browser, mobile app, or any client you don't control. Proxy requests through your own backend.
What a key can reach
A key carries its owner's permissions. The request is authorized as the user who owns the key, against the organization in X-TenantID — so a key reaches exactly what its owner reaches, and no more.
It is not a narrower scope than that user. Issue keys from an account whose access matches what the integration actually needs, and rotate on any leak.
Errors
| Status | Meaning | Fix |
|---|---|---|
401 | Missing or invalid API-Key / X-TenantID | Check both headers are present and current. |
400 | Malformed body | Validate against the API Reference. |
404 | Unknown resource | Verify the path and any {uuid}. |
Error responses share one shape:
json
{
"code": "invalid_request",
"message": "phone_number is required",
"type": "validation"
}Base URLs
| Environment | Base URL |
|---|---|
| Production | https://api.messageeagle.com/api/v1/app1/platform |
| Sandbox | https://sandbox.messageeagle.com/api/v1/app1/platform |
Continue to SMS Messaging.
