Data Residency

Moesif runs in two regions. The global region is the default. The EU region stores your API analytics data at rest in the EU (Azure West Europe).

Existing customers don’t need to do anything. An organization’s region is set when the organization is created and can’t be changed later, and most organizations are in the global region.

Choose a region

To use the EU region, select Europe (West Europe) in the region selector when you create your Moesif organization. Every application in the organization uses that region.

You sign in to Moesif at www.moesif.com in either region. The dashboard routes your requests to your organization’s region.

Endpoints

Each region has its own hostnames. Paths are the same in both regions, so moving an integration to the EU region only changes the hostname.

API Global EU
Collector API (events, actions, users, companies, OpenTelemetry) https://api.moesif.net https://eu.api.moesif.net
Management API https://api.moesif.com https://eu.api.moesif.com

For example, an EU organization sends events to https://eu.api.moesif.net/v1/events and queries them at https://eu.api.moesif.com/v1/search/~/search/events.

Configure your integration

Integrations send data to the global Collector API unless you change their endpoint. For an EU organization, set the endpoint to https://eu.api.moesif.net:

Integration Setting
Apigee <Property name="baseUri">https://eu.api.moesif.net</Property> in the JavaScript policy
AWS API Gateway Firehose HTTP endpoint URL https://eu.api.moesif.net/v1/partners/aws/kinesis. Use the manual setup; the CloudFormation template only supports the global region
AWS Lambda (Node.js) baseUri: "https://eu.api.moesif.net"
Ballerina reporterBaseUrl = "https://eu.api.moesif.net" in Config.toml
Docusaurus host: 'eu.api.moesif.net' in themeConfig.moesif
Envoy (WASM) "base_uri": "eu.api.moesif.net" in the plugin configuration, and eu.api.moesif.net as the Moesif cluster address and sni
Gloo Gateway environment variable BASE_URI=https://eu.api.moesif.net on the external processor
Go moesifOption["Api_Endpoint"] = "https://eu.api.moesif.net"
Go (Gin) moesifOption["Api_Endpoint"] = "https://eu.api.moesif.net"
gravitee.io "baseUrl": "https://eu.api.moesif.net"
Java Spring Request new MoesifAPIClient("YOUR_APPLICATION_ID", "https://eu.api.moesif.net")
Javascript (Browser) host: 'eu.api.moesif.net'
Kong API Gateway config.api_endpoint=https://eu.api.moesif.net
Kong Ingress Controller api_endpoint: https://eu.api.moesif.net in the KongPlugin config
Kong Konnect api_endpoint: https://eu.api.moesif.net in the plugin config
Kubernetes NGINX Ingress Controller set $api_endpoint https://eu.api.moesif.net; in the server-snippet
LiteLLM MoesifHandler(moesif_base_url="https://eu.api.moesif.net")
NGINX config:set("api_endpoint", "https://eu.api.moesif.net")
Node.js (Express) baseUri: "https://eu.api.moesif.net"
OpenTelemetry exporter endpoints https://eu.api.moesif.net/v1/traces and https://eu.api.moesif.net/v1/logs
PHP (Symfony) host: 'eu.api.moesif.net' under moesif.options
Play Framework play.filters.moesifApiFilter.collectorEndpoint = "https://eu.api.moesif.net"
Python (Django) 'BASE_URI': 'https://eu.api.moesif.net'
Python ASGI (FastAPI) 'BASE_URI': 'https://eu.api.moesif.net'
Python Requests 'LOCAL_MOESIF_BASEURL': 'https://eu.api.moesif.net'
Python Tornado 'BASE_URI': 'https://eu.api.moesif.net'
Python WSGI (Flask, Bottle, Pyramid) 'BASE_URI': 'https://eu.api.moesif.net'
Strapi baseUri: "https://eu.api.moesif.net" in the moesif plugin config
Tyk API Gateway meta.bulk_config.api_endpoint set to https://eu.api.moesif.net, or TYK_PMP_PUMPS_MOESIF_META_BULKCONFIG_APIENDPOINT=https://eu.api.moesif.net
WSO2 API Manager moesif_base_url = "https://eu.api.moesif.net" under [apim.analytics.properties] in deployment.toml

These integrations can’t send data to the EU region yet: Alexa Skills (Node.js), AWS Lambda (Go), AWS Lambda (Python), AWS Lambda (Ruby), Azure API Management, Azure Web App Extension, C# (.NET), Cloudflare Workers, Envoy (Lua), Express Gateway, Google Tag Manager, Java Servlet (Spring, Jersey), KrakenD, NGINX Plus, OkHttp (Java, Kotlin, etc), PHP (Laravel), PHP (Slim), Ruby (Rack, Rails), WSO2 Kubernetes Gateway.

If your integration is in that list or isn’t listed at all, contact us before you set it up for an EU organization.

For the Management API, replace api.moesif.com with eu.api.moesif.com in every request. This includes requests that generate embedded template tokens.

If you run Secure Proxy, set MOESIF_HOME_REGION=eu.

Region checks

The Collector API only accepts data for organizations in its own region. An EU organization’s Application Id is rejected by api.moesif.net, and a global organization’s Application Id is rejected by eu.api.moesif.net. Both return 403.

If your integration logs 403 errors that mention the home region, its endpoint doesn’t match your organization’s region. Change the endpoint to the one listed above.

Firewall allowlists

For an EU organization, allow outbound HTTPS (port 443) to eu.api.moesif.net for data collection and eu.api.moesif.com for the Management API.

If you have to allowlist IP addresses instead, the EU Collector API uses 13.248.191.0 and 35.71.169.49. Moesif recommends allowlisting the hostname, since IP addresses can change.

Updated: