OptinMonster · Authentication Profile
Optinmonster Authentication
Authentication
OptinMonster declares 0 security scheme(s) across its OpenAPI definitions.
CompanyLead GenerationMarketingConversion OptimizationEmail MarketingPopupsWordPressWebhooksSaaSMarketing Automation
Methods:
Schemes: 0
OAuth flows:
API key in:
Security Schemes
Source
Authentication Profile
generated: '2026-08-12'
method: searched
source: >-
https://optinmonster.com/docs/how-the-optinmonster-api-key-works-with-wordpress/ ;
https://plugins.svn.wordpress.org/optinmonster/trunk/OMAPI/Api.php ;
live OPTIONS preflight against https://api.optinmonster.com/v2/campaigns
docs: https://optinmonster.com/docs/how-the-optinmonster-api-key-works-with-wordpress/
note: >-
OptinMonster publishes no OpenAPI, so this profile is assembled from three real sources: the
help-center API-key article, the first-party WordPress plugin source (OMAPI/Api.php, which builds
every request the vendor's own client makes), and a live CORS preflight whose
`access-control-allow-headers` enumerates every credential header the API accepts. There is no
OAuth 2.0 and no OpenID Connect surface anywhere on the platform — key auth only — so no
scopes/ artifact is emitted.
summary:
schemes: 2
primary: api-key-header
oauth2: false
openid_connect: false
mtls: false
scopes: false
securitySchemes:
- id: apiKeyHeader
type: apiKey
in: header
name: X-OptinMonster-ApiKey
primary: true
description: >-
The account API key, issued in the OptinMonster app under My Account > API. Sent on every
request as the `X-OptinMonster-ApiKey` header. The API may also return this header on a
response, which the WordPress plugin captures to upgrade a legacy credential pair to a key.
evidence:
- source: plugin-source
detail: "OMAPI/Api.php line 260: $headers['X-OptinMonster-ApiKey'] = $this->apikey;"
url: https://plugins.svn.wordpress.org/optinmonster/trunk/OMAPI/Api.php
- source: cors-preflight
detail: >-
OPTIONS https://api.optinmonster.com/v2/campaigns returns
access-control-allow-headers including X-OptinMonster-ApiKey
http_status: 200
- id: legacyKeyUser
type: apiKey
in: query
name: omapi-key
primary: false
deprecated: true
description: >-
The legacy credential pair — an API key plus an API username — carried as `omapi-key` (and a
paired user value) in the request body/query rather than as a header. Still accepted, but the
help-center article states an API key is no longer required to connect the WordPress plugin,
and the plugin migrates a legacy pair to the header key on first successful call.
evidence:
- source: plugin-source
detail: "OMAPI/Api.php line 223: 'omapi-key' => $this->key"
url: https://plugins.svn.wordpress.org/optinmonster/trunk/OMAPI/Api.php
accepted_auth_headers:
note: >-
Read verbatim from the live `access-control-allow-headers` on an OPTIONS preflight. Presence in
this list means the edge will accept the header cross-origin; it does not prove every one is an
active credential path. X-OptinMonster-ApiKey is the one the vendor's own client uses.
observed:
- X-OptinMonster-ApiKey
- X-OptinMonster-SKey
- Bearer-Token
- X-Auth-Token
- Authorization
- Auth
- X-CSRF-Token
- X-XSRF-Token
fetched: '2026-08-12'
url: https://api.optinmonster.com/v2/campaigns
http_status: 200
context_headers:
note: >-
Not credentials — identification/telemetry headers the first-party WordPress client sends
alongside the key, and which the edge explicitly allows.
headers:
- name: OMAPI-Referer
value: the calling site URL
- name: OMAPI-Sender
value: WordPress
- name: OMAPI-Site
value: the WordPress blog name
- name: OMAPI-Version
value: the plugin version
- name: OMAPI-Plugins
value: active-plugin fingerprint
- name: X-OptinMonster-UrlPath
- name: X-OptinMonster-Campaigns
- name: X-SC-Touchpoint
unauthenticated_surface:
- path: /v2/templates
method: GET
http_status: 200
description: >-
The campaign template catalog is served without any credential — 697 template objects,
1.27 MB, on 2026-08-12. The only anonymous data endpoint found.
fetched: '2026-08-12'
key_management:
issue: https://app.optinmonster.com/ (My Account > API)
rotate: >-
POST v2/key/regenerate — the plugin calls this to regenerate the account key.
revoke: undocumented publicly
webhook_auth:
supported: false
note: >-
Outbound webhooks carry no authentication. The docs state verbatim "At this time we do not
support Authentication for Webhook." Receivers must validate by other means.
source: https://optinmonster.com/docs/how-to-connect-optinmonster-with-a-webhook/
gaps:
- No OpenAPI or public API reference documents the authentication scheme; the header name is
discoverable only from the plugin source or a CORS preflight.
- No OAuth 2.0, so no delegated/third-party authorization and no scope model.
- Webhook deliveries are unauthenticated and unsigned.