For the complete documentation index, see llms.txt. This page is also available as Markdown.

Onlymonster API

Base URLs

  • Production: https://omapi.onlymonster.ai

Rate limits

  • Token limit: 25 requests per second across all endpoints.

  • Endpoint limit: 15 requests per second per endpoint (default). Some endpoints override this — see the description on each endpoint.

  • Platform account limit: 1 request per second per platform account on selected endpoint groups — endpoints that apply it say so in their description.

  • Exceeding either limit returns 429 Rate limit exceeded.

API key permissions

Each API key carries the permissions chosen when it was created. A request to an endpoint the key is not permitted to call returns 403 with code: API_KEY_PERMISSION_DENIED and the missing permission in details.required_permission.

Permissions are independent of the key's account access: a request needs both. Keys created before permissions were introduced hold every permission. Each endpoint's description names its required permission.

  • accounts.view — GET /api/v0/accounts, GET /api/v0/accounts/{account_id}

  • dashboard.view — GET …/transactions, GET …/chargebacks

  • team_metrics.view — GET /api/v0/users/metrics, GET /api/v0/members

  • traffic_metrics.view — GET …/tracking-links, GET …/tracking-link-users, GET …/trial-links, GET …/trial-link-users, GET …/subscriptions

  • onlyfans.messages — GET /api/v0/accounts/{account_id}/fans, GET / POST …/chats/{chat_id}/messages, PATCH …/fans/{fan_id}

  • onlyfans.collections — POST …/fans/{fan_id}/subscribe

  • onlyfans.statements — GET /proxy/v0/…/statements/balances, GET / POST /proxy/v0/…/statements/payout-requests

  • auto_messages.view — GET …/auto-message-campaigns, GET …/auto-message-campaigns/{campaign_id}

  • auto_messages.edit — POST …/auto-message-campaigns, PATCH …/auto-message-campaigns/{campaign_id}/status, POST …/auto-message-campaigns/{campaign_id}/unsend

  • media_uploader.manage — All …/vault/… endpoints: folders, medias, thumbnails and media uploads

  • settings.view — Account session export (enabled per organisation)

Get list of accounts.

get

Rate limit: 15 requests per second

Required permission: accounts.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Query parameters
cursorstring · min: 2Optional
limitinteger · min: 1 · max: 1000Optional
withExpiredSubscriptionsbooleanOptional
Responses
200

Default Response

application/json
nextCursorstringOptional
get/api/v0/accounts
GET /api/v0/accounts HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "accounts": [
    {
      "id": 1,
      "platform_account_id": "1",
      "platform": "text",
      "name": "text",
      "email": "text",
      "avatar": "text",
      "username": "text",
      "organisation_id": "1",
      "subscribe_price": 1,
      "subscription_expiration_date": "2026-01-01T00:00:00.000Z",
      "custom_label": null
    }
  ],
  "nextCursor": "text"
}

Create a Priority Mass Messages broadcast

post

Rate limit: 1 request per second

A created broadcast is a real broadcast to its whole audience, not a draft. Without a schedule it is queued and goes out without further action; with one it waits for the hour it names. Use the status endpoint to pause it.

This endpoint is not idempotent, and a repeated create is a second broadcast to every fan it matches. A request that times out, or that answers 500 or 502, may still have created one: whether it exists is unknown, so list the account broadcasts before retrying and pause a duplicate at once. Listing the broadcasts needs priority_mass_messages.view in addition to priority_mass_messages.edit.

A schedule and an end are each a wall-clock date and whole hour plus the clock it is read on. An offset carried by the value is ignored. A schedule in the past goes out at once, an end before the schedule is accepted, and a broadcast whose end passes completes as sent whatever state it was in.

A broadcast reads its schedule back as the UTC instant plus the zone name, not as the wall clock it was stated on, and reads it back as null once it has been dispatched.

audience_filters[].options.lists[].name is required on every fan list and never published back: the reads carry identifiers alone.

Revoking or narrowing the key that created a broadcast does not stop it. Pause it through the status endpoint instead.

Required permission: priority_mass_messages.edit

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account whose broadcasts are read.

Example: 12345Pattern: ^(0|[1-9]\d*)$
Body
namestring · min: 1 · max: 100 · nullableOptional

Broadcast name. Required when the broadcast sends more than one message, and when its only message carries media but no text. A single text message sent without a name reads back with that text as its name.

Pattern: \S
scheduled_atstring · date-timeOptional

Wall-clock date and whole hour at which the broadcast goes out, read on the clock scheduled_at_timezone_mode names. An offset carried by the value is ignored, so the hour written is the hour used — the value is not moved to the instant an offset would name. Required together with scheduled_at_timezone_mode. A schedule in the past is accepted and goes out at once. Omit both to send as soon as the broadcast is queued.

scheduled_at_timezone_modestring · enumOptionalPossible values:
Other propertiesnotOptional
Responses
201

One Priority Mass Messages broadcast of the account.

application/json

One Priority Mass Messages broadcast of the account.

idstring · max: 19Required

Broadcast identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
account_idstring · max: 19Required

OnlyMonster account the broadcast belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
namestring · nullableRequired

Broadcast name as the account owner set it. For a single-message broadcast created without a name, the text of that message, as the panel shows it. Null for a broadcast created without a name whose content could not be read.

statusstring · enum · nullableRequired

State of the broadcast, as the panel shows it. Null for a broadcast holding a state this API does not name, which no broadcast created through it can reach.

Possible values:
pause_reasonstring · enum · nullableRequired

Why the broadcast is paused: manual when a person paused it, send_errors when too many sends failed. Null when it is not paused.

Possible values:
progress_percentinteger · max: 100Required

How far the broadcast has got through its audience, from 0 to 100.

created_atstring · date-timeRequired

When the broadcast was created (ISO 8601 Zulu).

scheduled_atstring · date-time · nullableRequired

When the broadcast is due to go out (ISO 8601 Zulu). Null once it has been dispatched, and null for one that was never scheduled; a broadcast paused before its schedule came due keeps it.

scheduled_at_timezonestring · nullableRequired

IANA zone name the schedule was stated in, so a client can show it the way the panel does. Null whenever scheduled_at is null.

Example: Europe/Berlin
targeted_recipients_countintegerRequired

Fans the broadcast resolved to. 0 until it has been prepared, and unaffected by what was delivered afterwards.

post/api/v0/accounts/{account_id}/priority-mass-message-campaigns
POST /api/v0/accounts/{account_id}/priority-mass-message-campaigns HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 658

{
  "name": null,
  "scheduled_at": "2026-01-01T00:00:00.000Z",
  "scheduled_at_timezone_mode": "utc",
  "rules": {
    "online_check_mode": "off",
    "unsend_delay_sec": 3600,
    "unsend_if_not_read_enabled": true,
    "mimic_on_reply_enabled": true,
    "end_at": "2026-01-01T00:00:00.000Z",
    "end_at_timezone_mode": "utc"
  },
  "audience_filters": [
    {
      "kind": "subscribed_date",
      "mode": "include",
      "options": {
        "from_at": "2026-01-01T00:00:00.000Z",
        "to_at": "2026-01-01T00:00:00.000Z",
        "from_days": 1,
        "to_days": 1
      }
    }
  ],
  "messages": [
    {
      "text": null,
      "price_gross": 0,
      "delay_sec": 1,
      "attachments": [
        {
          "id": "text",
          "type": "image",
          "is_paid": true
        }
      ],
      "text_is_paid": true,
      "tagged_platform_account_ids": [
        "1"
      ]
    }
  ],
  "ANY_ADDITIONAL_PROPERTY": null
}
{
  "id": "4312",
  "account_id": "12345",
  "name": "text",
  "status": null,
  "pause_reason": null,
  "progress_percent": 1,
  "created_by": {
    "type": "user",
    "id": "42"
  },
  "created_at": "2026-01-01T00:00:00.000Z",
  "scheduled_at": "2026-01-01T00:00:00.000Z",
  "scheduled_at_timezone": "Europe/Berlin",
  "rules": {
    "online_check_mode": null,
    "unsend_delay_sec": 1,
    "unsend_if_not_read_enabled": true,
    "unsend_if_not_replied_enabled": true,
    "mimic_on_reply_enabled": true,
    "end_at": "2026-01-01T00:00:00.000Z",
    "end_at_timezone": "Europe/Berlin"
  },
  "audience_filters": [
    {
      "kind": "subscribed_date",
      "mode": "include",
      "options": {
        "from_at": "2026-01-01T00:00:00.000Z",
        "to_at": "2026-01-01T00:00:00.000Z"
      }
    }
  ],
  "messages": [
    {
      "step": 0,
      "text": "text",
      "price_gross": 9.99,
      "delay_sec": 1,
      "attachments": [
        {
          "id": "1289402",
          "type": "image",
          "is_paid": true
        }
      ],
      "text_is_paid": true,
      "tagged_platform_account_ids": [
        "67890"
      ]
    }
  ],
  "targeted_recipients_count": 1,
  "stats": {
    "sent_messages_count": 1,
    "unsent_messages_count": 1,
    "replied_messages_count": 1,
    "purchased_messages_count": 1,
    "purchased_amount_gross": 1,
    "reply_rate": 1,
    "purchase_rate": 1
  }
}

Recall what a Priority Mass Messages broadcast sent

post

Rate limit: 5 requests per second

The broadcast stops sending and the messages it delivered are taken back out of the fans' chats, as far as the platform's 24-hour recall window allows. A recall is possible within 24 hours of the broadcast's last status change.

This cannot be undone and it is not limited to broadcasts this API created. Any broadcast of the account can be recalled, including one a person built in the panel.

A 502 does not promise the broadcast is untouched, but no repeat recalls twice, so repeating the request is safe; read the broadcast if the answer stays 502. This differs from the Auto Messages recall, whose 502 asks the caller to read the campaign before repeating at all. Reading the broadcast needs priority_mass_messages.view in addition to priority_mass_messages.edit.

Required permission: priority_mass_messages.edit

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account the broadcast belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
campaign_idstring · max: 19Required

Broadcast identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
Responses
204

The recall was applied: the broadcast stops sending and takes back what it can.

No content

post/api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}/unsend
POST /api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}/unsend HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*

No content

Retrieve the Priority Mass Messages broadcasts of an account

get

Rate limit: 5 requests per second

A schedule reads back as null once the broadcast has been dispatched; a broadcast paused before its schedule came due keeps it.

Sent, unsent and purchased figures, and the purchased amount, count the first message of the broadcast only; replies are counted across every step. Because of that a sequence can report more replies than sends, and its reply_rate then reads null rather than a figure above 1.

A broadcast whose content could not be read is listed with messages: [] and every figure at zero, rather than failing the page.

Required permission: priority_mass_messages.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account whose broadcasts are read.

Example: 12345Pattern: ^(0|[1-9]\d*)$
Query parameters
limitinteger · min: 1 · max: 100Optional

Items per page (min: 1, max: 100, default: 50).

Default: 50
offsetintegerOptional

Items to skip (default: 0).

Default: 0
include_archivedbooleanOptional

Include archived broadcasts in the page (default: false). Only archived is affected — every other state is always listed.

Default: false
Responses
200

A page of the account Priority Mass Messages broadcasts, newest first.

application/json

A page of the account Priority Mass Messages broadcasts, newest first.

has_morebooleanRequired

True when more broadcasts exist beyond this page.

get/api/v0/accounts/{account_id}/priority-mass-message-campaigns
GET /api/v0/accounts/{account_id}/priority-mass-message-campaigns HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": "4312",
      "account_id": "12345",
      "name": "text",
      "status": null,
      "pause_reason": null,
      "progress_percent": 1,
      "created_by": {
        "type": "user",
        "id": "42"
      },
      "created_at": "2026-01-01T00:00:00.000Z",
      "scheduled_at": "2026-01-01T00:00:00.000Z",
      "scheduled_at_timezone": "Europe/Berlin",
      "rules": {
        "online_check_mode": null,
        "unsend_delay_sec": 1,
        "unsend_if_not_read_enabled": true,
        "unsend_if_not_replied_enabled": true,
        "mimic_on_reply_enabled": true,
        "end_at": "2026-01-01T00:00:00.000Z",
        "end_at_timezone": "Europe/Berlin"
      },
      "audience_filters": [
        {
          "kind": "subscribed_date",
          "mode": "include",
          "options": {
            "from_at": "2026-01-01T00:00:00.000Z",
            "to_at": "2026-01-01T00:00:00.000Z"
          }
        }
      ],
      "messages": [
        {
          "step": 0,
          "text": "text",
          "price_gross": 9.99,
          "delay_sec": 1,
          "attachments": [
            {
              "id": "1289402",
              "type": "image",
              "is_paid": true
            }
          ],
          "text_is_paid": true,
          "tagged_platform_account_ids": [
            "67890"
          ]
        }
      ],
      "targeted_recipients_count": 1,
      "stats": {
        "sent_messages_count": 1,
        "unsent_messages_count": 1,
        "replied_messages_count": 1,
        "purchased_messages_count": 1,
        "purchased_amount_gross": 1,
        "reply_rate": 1,
        "purchase_rate": 1
      }
    }
  ],
  "has_more": true
}

Retrieve one Priority Mass Messages broadcast

get

Rate limit: 5 requests per second

A schedule reads back as null once the broadcast has been dispatched; a broadcast paused before its schedule came due keeps it.

Sent, unsent and purchased figures, and the purchased amount, count the first message of the broadcast only; replies are counted across every step. Because of that a sequence can report more replies than sends, and its reply_rate then reads null rather than a figure above 1.

A broadcast whose content could not be read is refused with 502 here, because that content is exactly what was asked for.

Required permission: priority_mass_messages.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account the broadcast belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
campaign_idstring · max: 19Required

Broadcast identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
Responses
200

One Priority Mass Messages broadcast of the account.

application/json

One Priority Mass Messages broadcast of the account.

idstring · max: 19Required

Broadcast identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
account_idstring · max: 19Required

OnlyMonster account the broadcast belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
namestring · nullableRequired

Broadcast name as the account owner set it. For a single-message broadcast created without a name, the text of that message, as the panel shows it. Null for a broadcast created without a name whose content could not be read.

statusstring · enum · nullableRequired

State of the broadcast, as the panel shows it. Null for a broadcast holding a state this API does not name, which no broadcast created through it can reach.

Possible values:
pause_reasonstring · enum · nullableRequired

Why the broadcast is paused: manual when a person paused it, send_errors when too many sends failed. Null when it is not paused.

Possible values:
progress_percentinteger · max: 100Required

How far the broadcast has got through its audience, from 0 to 100.

created_atstring · date-timeRequired

When the broadcast was created (ISO 8601 Zulu).

scheduled_atstring · date-time · nullableRequired

When the broadcast is due to go out (ISO 8601 Zulu). Null once it has been dispatched, and null for one that was never scheduled; a broadcast paused before its schedule came due keeps it.

scheduled_at_timezonestring · nullableRequired

IANA zone name the schedule was stated in, so a client can show it the way the panel does. Null whenever scheduled_at is null.

Example: Europe/Berlin
targeted_recipients_countintegerRequired

Fans the broadcast resolved to. 0 until it has been prepared, and unaffected by what was delivered afterwards.

get/api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}
GET /api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id} HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "id": "4312",
  "account_id": "12345",
  "name": "text",
  "status": null,
  "pause_reason": null,
  "progress_percent": 1,
  "created_by": {
    "type": "user",
    "id": "42"
  },
  "created_at": "2026-01-01T00:00:00.000Z",
  "scheduled_at": "2026-01-01T00:00:00.000Z",
  "scheduled_at_timezone": "Europe/Berlin",
  "rules": {
    "online_check_mode": null,
    "unsend_delay_sec": 1,
    "unsend_if_not_read_enabled": true,
    "unsend_if_not_replied_enabled": true,
    "mimic_on_reply_enabled": true,
    "end_at": "2026-01-01T00:00:00.000Z",
    "end_at_timezone": "Europe/Berlin"
  },
  "audience_filters": [
    {
      "kind": "subscribed_date",
      "mode": "include",
      "options": {
        "from_at": "2026-01-01T00:00:00.000Z",
        "to_at": "2026-01-01T00:00:00.000Z"
      }
    }
  ],
  "messages": [
    {
      "step": 0,
      "text": "text",
      "price_gross": 9.99,
      "delay_sec": 1,
      "attachments": [
        {
          "id": "1289402",
          "type": "image",
          "is_paid": true
        }
      ],
      "text_is_paid": true,
      "tagged_platform_account_ids": [
        "67890"
      ]
    }
  ],
  "targeted_recipients_count": 1,
  "stats": {
    "sent_messages_count": 1,
    "unsent_messages_count": 1,
    "replied_messages_count": 1,
    "purchased_messages_count": 1,
    "purchased_amount_gross": 1,
    "reply_rate": 1,
    "purchase_rate": 1
  }
}

Pause or resume a Priority Mass Messages broadcast

patch

Rate limit: 5 requests per second

The answer says which state the broadcast holds now, which is not always the one asked for: resuming a broadcast paused before its schedule came due answers scheduled, because it keeps that schedule.

A paused broadcast can be resumed for five days; after a further period it is archived automatically and can no longer be resumed. There is no manual archive.

Asking for a state the broadcast already holds is accepted and changes nothing. A change that fails for a reason that is not about the request answers a plain 502 with no code.

Required permission: priority_mass_messages.edit

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account the broadcast belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
campaign_idstring · max: 19Required

Broadcast identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
Body

State to move the broadcast to. paused — the broadcast stops sending. Accepted from scheduled, queued and sending; pausing a paused broadcast changes nothing. queued — the broadcast resumes. Accepted for a paused broadcast within the resume window, and for one already queued, which changes nothing.

statusstring · enumRequiredPossible values:
Responses
200

The state the broadcast holds now. A resume answers queued, or scheduled when the broadcast was paused before its schedule came due and keeps it.

application/json

The state the broadcast holds now. A resume answers queued, or scheduled when the broadcast was paused before its schedule came due and keeps it.

statusstring · enumRequiredPossible values:
patch/api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}/status
PATCH /api/v0/accounts/{account_id}/priority-mass-message-campaigns/{campaign_id}/status HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 19

{
  "status": "paused"
}
{
  "status": "paused"
}

Get account by ID.

get

Rate limit: 15 requests per second

Required permission: accounts.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Responses
200

Default Response

application/json
get/api/v0/accounts/{account_id}
GET /api/v0/accounts/{account_id} HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "account": {
    "id": 1,
    "platform_account_id": "1",
    "platform": "text",
    "name": "text",
    "email": "text",
    "avatar": "text",
    "username": "text",
    "organisation_id": "1",
    "subscribe_price": 1,
    "subscription_expiration_date": "2026-01-01T00:00:00.000Z",
    "custom_label": null
  }
}

Retrieve subscriptions for a platform account

get

Rate limit: 15 requests per second

Required permission: traffic_metrics.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Possible values:
platform_account_idany ofRequired
string · max: 19Optional

Big integer id as string

Example: 1Pattern: ^(0|[1-9]\d*)$
or
stringOptional
Query parameters
startstring · date-timeRequired

Start of the subscription timestamp range (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
endstring · date-timeRequired

End of the subscription timestamp range (ISO 8601 Zulu).

Example: 2025-10-31T23:59:59.999Z
limitinteger · min: 10 · max: 1000Optional

Items per page (min: 10, max: 1000, default: 100).

Default: 100Example: 100
cursorstringOptional

Pagination cursor returned from the previous request.

Responses
200

Default Response

application/json
cursorstringOptional

Base64-encoded cursor for paginating subsequent results. Present only if additional pages exist.

get/api/v0/platforms/{platform}/accounts/{platform_account_id}/subscriptions
GET /api/v0/platforms/{platform}/accounts/{platform_account_id}/subscriptions?start=2026-01-01T00%3A00%3A00.000Z&end=2026-01-01T00%3A00%3A00.000Z HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "fan": {
        "id": "1"
      },
      "price_gross": 1,
      "regular_price_gross": 1,
      "action": "text",
      "type": "text",
      "subscribed_at": "2026-01-01T00:00:00.000Z",
      "expires_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "cursor": ""
}

Get fan IDs for an account based on recent chat activity.

get

Rate limit: 1 request per second

Required permission: onlyfans.messages

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Query parameters
limitinteger · min: 1 · max: 10000OptionalDefault: 10000
Responses
200

Default Response

application/json
fan_idsstring[]Required
get/api/v0/accounts/{account_id}/fans
GET /api/v0/accounts/{account_id}/fans HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "fan_ids": [
    "text"
  ]
}

Retrieve payout balances for a platform account

get

Rate limit: 1 request per second per platform account (shared "proxy" group).

Required permission: onlyfans.statements

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Possible values:
platform_account_idany ofRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
string · max: 19Optional

Big integer id as string

Example: 1Pattern: ^(0|[1-9]\d*)$
or
stringOptional
Responses
200

Default Response

application/json
payoutAvailablenumberRequired

Balance available for withdrawal. Balances accumulate creator earnings after the OnlyFans platform fee.

Example: 28.46
payoutPendingnumberRequired

Earnings not yet matured for withdrawal (see manualPayoutPendingDays).

Example: 416.38
currencystringRequired

ISO 4217 currency code; all monetary values in this response are in major units.

Example: USD
minPayoutSummnumberRequired

Minimum available balance required to request a payout.

Example: 20
maxPayoutSummnumberRequired

Maximum amount withdrawable at this moment.

Example: 28.46
manualPayoutPendingDaysintegerRequired

Number of days a manual payout stays pending before it becomes available.

Example: 7
withdrawalPeriodstringRequired

Currently selected withdrawal period code.

Example: manual
get/proxy/v0/platforms/{platform}/accounts/{platform_account_id}/statements/balances
GET /proxy/v0/platforms/{platform}/accounts/{platform_account_id}/statements/balances HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "payoutAvailable": 28.46,
  "payoutPending": 416.38,
  "currency": "USD",
  "minPayoutSumm": 20,
  "maxPayoutSumm": 28.46,
  "withdrawalPeriodOptions": [
    {
      "code": "manual",
      "name": "text"
    }
  ],
  "manualPayoutPendingDays": 7,
  "withdrawalPeriod": "manual"
}

Retrieve payout requests for a platform account

get

Rate limit: 1 request per second per platform account (shared "proxy" group).

Required permission: onlyfans.statements

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Possible values:
platform_account_idany ofRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
string · max: 19Optional

Big integer id as string

Example: 1Pattern: ^(0|[1-9]\d*)$
or
stringOptional
Query parameters
limitinteger · min: 1 · max: 100Optional

Items per page (min: 1, max: 100, default: 10).

Default: 10Example: 10
offsetintegerOptional

Number of items to skip.

Default: 0Example: 0
markernumberOptional

Snapshot marker returned by a previous response. Pass it back to keep pagination consistent while new payout requests arrive; omit to paginate the live list with plain offsets.

Example: 1783602843
Responses
200

Default Response

application/json
markernumber · nullableRequired

Snapshot marker for consistent pagination. Pass it as the "marker" query parameter of the next page request.

Example: 1783602843
get/proxy/v0/platforms/{platform}/accounts/{platform_account_id}/statements/payout-requests
GET /proxy/v0/platforms/{platform}/accounts/{platform_account_id}/statements/payout-requests HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "list": [
    {
      "invoiceId": "78266704",
      "createdAt": "2025-10-05T20:44:34+00:00",
      "amount": 1,
      "currency": "USD",
      "state": "approved",
      "rejectReason": "text"
    }
  ],
  "marker": 1783602843
}

Create a payout request for a platform account

post

Requests a withdrawal of the given amount from the account's available balance.

This action is irreversible: OnlyFans does not support idempotency for this request. Do not blindly retry on timeout — first check the payout requests list to see whether the request was created.

Rate limit: 1 request per second per platform account (shared "proxy" group).

This endpoint is in gradual rollout: it is enabled per organization, and organizations without access receive 403 Forbidden.

Required permission: onlyfans.statements

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Possible values:
platform_account_idany ofRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
string · max: 19Optional

Big integer id as string

Example: 1Pattern: ^(0|[1-9]\d*)$
or
stringOptional
Body
withdrawal_amountnumber · max: 1000000Required

Amount to withdraw in USD major units, up to 2 decimal places. Must not exceed the available balance (see the balances endpoint).

Example: 20
Responses
200

Default Response

application/json
post/proxy/v0/platforms/{platform}/accounts/{platform_account_id}/statements/payout-requests
POST /proxy/v0/platforms/{platform}/accounts/{platform_account_id}/statements/payout-requests HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 24

{
  "withdrawal_amount": 20
}
{
  "list": [
    {
      "state": "new",
      "rejectReason": "text"
    }
  ]
}

Get chat messages for a specific chat.

get

Rate limit: 1 request per second

Required permission: onlyfans.messages

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
chat_idstring · min: 1 · max: 100Required
Query parameters
limitinteger · min: 1 · max: 100OptionalDefault: 100
message_idintegerOptional

ID of the last message from previous page. Used for pagination

orderany ofOptionalExample: {"value":"asc"}
string · enumOptionalPossible values:
or
string · enumOptionalPossible values:
Responses
200

Default Response

application/json
has_morebooleanRequired

true if more messages are available beyond the returned page

get/api/v0/accounts/{account_id}/chats/{chat_id}/messages
GET /api/v0/accounts/{account_id}/chats/{chat_id}/messages HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": 1,
      "text": "text",
      "from_user": 1,
      "is_sent_by_me": true,
      "created_at": "text",
      "media": [
        {
          "id": 1,
          "type": "text",
          "can_view": true,
          "is_ready": true,
          "has_error": true,
          "converted_to_video": true,
          "created_at": "text",
          "thumbnail_url": "text"
        }
      ],
      "media_count": 1,
      "is_opened": true,
      "is_new": true,
      "price": 1,
      "is_free": true,
      "can_purchase": true,
      "can_purchase_reason": "text",
      "sender": {
        "type": null,
        "user_id": null
      }
    }
  ],
  "has_more": true
}

Send a message to a chat.

post

Rate limit: 1 request per second

The message text is scanned by the content-moderation service before being enqueued. Requests whose text matches restricted words or topics return 400 with code: "RESTRICTED_WORDS_DETECTED" and the matching words / topics in details.

Required permission: onlyfans.messages

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
chat_idstring · min: 1 · max: 100Required
Body
and
anyOptional
and
anyOptional
and
anyOptional
and
anyOptional
Responses
202

Default Response

application/json
send_idstring · uuidRequired

Unique identifier for tracking this send by webhook

post/api/v0/accounts/{account_id}/chats/{chat_id}/messages
POST /api/v0/accounts/{account_id}/chats/{chat_id}/messages HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 97

{
  "text": null,
  "price": 0,
  "locked_text": false,
  "media": [
    {
      "id": "text",
      "type": "image",
      "is_paid": true
    }
  ]
}
{
  "send_id": "123e4567-e89b-12d3-a456-426614174000"
}

Update the private labels of a fan. (For OnlyFans account only)

patch

Sets the custom name and the note the account owner keeps for a fan.

Both are private to the account owner: they are never shown to the fan and are not the fan's profile name on the platform.

Rate limit: 1 request per second

Required permission: onlyfans.messages

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
fan_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Body

At least one field must be present. Fields left out keep their current value.

or
Responses
200

Default Response

application/json
successbooleanRequired
patch/api/v0/accounts/{account_id}/fans/{fan_id}
PATCH /api/v0/accounts/{account_id}/fans/{fan_id} HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "custom_name": "VIP Whale",
  "note": "Prefers morning messages"
}
{
  "success": true
}

Subscribe the account to a fan. (For OnlyFans account only)

post

Makes the account follow the fan on the platform and returns the resulting subscription. Subscribing to a fan the account already follows is not an error: the existing subscription is returned unchanged.

Rate limit: 1 request per second

Required permission: onlyfans.collections

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
fan_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Responses
200

Default Response

application/json
subscribedbooleanRequired

Whether the account is subscribed to the fan.

subscribed_atstring · date-time · nullableRequired

Start of the account's subscription to the fan.

Example: 2026-09-11T09:31:50+00:00
expires_atstring · date-time · nullableRequired

End of the account's subscription to the fan. Null when it has no end date.

Example: 2036-09-11T09:31:50+00:00
auto_renew_enabledboolean · nullableRequired

Whether the subscription renews automatically.

price_grossnumber · nullableRequired

Price of the subscription, paid by the account, in USD. 0 or null means free.

Example: 0
post/api/v0/accounts/{account_id}/fans/{fan_id}/subscribe
POST /api/v0/accounts/{account_id}/fans/{fan_id}/subscribe HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "fan": {
    "id": "1"
  },
  "subscribed": true,
  "subscribed_at": "2026-09-11T09:31:50+00:00",
  "expires_at": "2036-09-11T09:31:50+00:00",
  "auto_renew_enabled": null,
  "price_gross": 0
}
get

Rate limit: 15 requests per second

Required permission: traffic_metrics.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Example: onlyfansPossible values:
platform_account_idstringRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
Query parameters
startstring · date-timeRequired

Start of the tracking link creation timestamp range (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
endstring · date-timeRequired

End of the tracking link creation timestamp range (ISO 8601 Zulu).

Example: 2025-10-31T23:59:59.999Z
limitinteger · min: 10 · max: 1000Optional

Items per page (min:10 max:1000 default:100)

Example: 100
cursorstringOptional

base64-signed string

Responses
200

List of tracking links successfully retrieved for the specified platform account.

application/json
cursorstringOptional

Base64-encoded cursor used for paginating subsequent results. Present only if additional pages exist.

Example: dHN4
get/api/v0/platforms/{platform}/accounts/{platform_account_id}/tracking-links
GET /api/v0/platforms/{platform}/accounts/{platform_account_id}/tracking-links?start=2025-10-01T00%3A00%3A00.000Z&end=2025-10-31T23%3A59%3A59.999Z HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": "1040071",
      "name": "Tracking Link 1",
      "subscribers": 939,
      "url": "https://onlyfans.com/some-name/c16",
      "is_active": true,
      "clicks": 49166,
      "created_at": "2024-06-16T20:47:37.000Z"
    },
    {
      "id": "940779",
      "name": "Tracking Link 2",
      "subscribers": 1213,
      "url": "https://onlyfans.com/some-name/c15",
      "is_active": true,
      "clicks": 75512,
      "created_at": "2024-05-07T19:20:16.000Z"
    }
  ],
  "cursor": "dHN4"
}
get

Rate limit: 15 requests per second

Required permission: traffic_metrics.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Example: onlyfansPossible values:
platform_account_idstringRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
Query parameters
collected_fromstring · date-timeOptional

Start of the collection timestamp range (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
collected_tostring · date-timeOptional

End of the collection timestamp range (ISO 8601 Zulu).

Example: 2026-10-31T23:59:59.999Z
limitinteger · min: 1 · max: 750Optional

Items per page (min:1 max:750 default:100)

Example: 100
cursorstringOptional

base64-signed string

link_idstringOptional

Filter results by a specific tracking link ID.

Example: 123
Responses
200

List of tracking link users successfully retrieved for the specified platform account.

application/json
cursorstringOptional

Base64-encoded cursor used for paginating subsequent results. Present only if additional pages exist.

Example: dHN4
get/api/v0/platforms/{platform}/accounts/{platform_account_id}/tracking-link-users
GET /api/v0/platforms/{platform}/accounts/{platform_account_id}/tracking-link-users HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "link_id": "1000001",
      "fan": {
        "id": "123456789",
        "name": "John Doe",
        "username": "johndoe"
      },
      "subscribed_at": "2025-10-15T10:30:00.000Z",
      "collected_at": "2025-10-15T11:00:00.000Z"
    }
  ],
  "cursor": "dHN4"
}
get

Rate limit: 15 requests per second

Required permission: traffic_metrics.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Example: onlyfansPossible values:
platform_account_idstringRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
Query parameters
startstring · date-timeRequired

Start of the trial link creation timestamp range (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
endstring · date-timeRequired

End of the trial link creation timestamp range (ISO 8601 Zulu).

Example: 2025-10-31T23:59:59.999Z
limitinteger · min: 10 · max: 1000Optional

Items per page (min:10 max:1000 default:100)

Example: 100
cursorstringOptional

base64-signed string

Responses
200

List of trial links successfully retrieved for the specified platform account.

application/json
cursorstringOptional

Base64-encoded cursor used for paginating subsequent results. Present only if additional pages exist.

Example: dHN4
get/api/v0/platforms/{platform}/accounts/{platform_account_id}/trial-links
GET /api/v0/platforms/{platform}/accounts/{platform_account_id}/trial-links?start=2025-10-01T00%3A00%3A00.000Z&end=2025-10-31T23%3A59%3A59.999Z HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": "10668344",
      "name": "Trial Link 1",
      "claims": 18,
      "claims_limit": 0,
      "url": "https://onlyfans.com/some-name/trial/bwmsqiakh3p1mvgec1gfutz6r26tbmav",
      "duration_days": 3,
      "expires_at": null,
      "is_active": true,
      "clicks": 20,
      "created_at": "2025-10-06T14:16:01.000Z"
    },
    {
      "id": "10611345",
      "name": "Trial Link 2",
      "claims": 0,
      "claims_limit": 0,
      "url": "https://onlyfans.com/some-name/trial/ndzgpob7tptoqargxapzpbgrxv0u8s6f",
      "duration_days": 3,
      "expires_at": null,
      "is_active": true,
      "clicks": 0,
      "created_at": "2025-09-19T21:03:38.000Z"
    }
  ],
  "cursor": "dHN4"
}
get

Rate limit: 15 requests per second

Required permission: traffic_metrics.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Example: onlyfansPossible values:
platform_account_idstringRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
Query parameters
collected_fromstring · date-timeOptional

Start of the collected_at timestamp range filter (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
collected_tostring · date-timeOptional

End of the collected_at timestamp range filter (ISO 8601 Zulu).

Example: 2025-10-31T23:59:59.999Z
limitinteger · min: 1 · max: 750Optional

Items per page (min:1 max:750 default:100)

Example: 100
cursorstringOptional

base64-signed string

link_idstringOptional

Filter results to a specific trial link ID.

Example: 10668344
Responses
200

List of trial link users successfully retrieved for the specified platform account.

application/json
cursorstringOptional

Base64-encoded cursor for paginating subsequent results. Present only if additional pages exist.

Example: dHN4
get/api/v0/platforms/{platform}/accounts/{platform_account_id}/trial-link-users
GET /api/v0/platforms/{platform}/accounts/{platform_account_id}/trial-link-users HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "link_id": "text",
      "fan": {
        "id": "text",
        "name": "text",
        "username": "text"
      },
      "subscribed_at": "2026-01-01T00:00:00.000Z",
      "collected_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "cursor": "dHN4"
}

Retrieve chargebacks for a platform account

get

Rate limit: 15 requests per second

Required permission: dashboard.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Currently, only "onlyfans" is supported.

Example: onlyfansPossible values:
platform_account_idstringRequired

Unique account identifier returned by the OnlyFans platform.

Example: 000000000
Query parameters
startstring · date-timeRequired

Start of the chargeback creation timestamp range (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
endstring · date-timeRequired

End of the chargeback creation timestamp range (ISO 8601 Zulu).

Example: 2025-10-31T23:59:59.999Z
limitinteger · min: 10 · max: 1000Optional

Items per page (min:10 max:1000 default:100)

Default: 100
cursorstringOptional

base64-signed string

Responses
200

List of chargebacks successfully retrieved for the specified platform account.

application/json
cursorstringOptional

Base64-encoded cursor used for paginating subsequent results. Present only if additional pages exist.

Example: dHN4
get/api/v0/platforms/{platform}/accounts/{platform_account_id}/chargebacks
GET /api/v0/platforms/{platform}/accounts/{platform_account_id}/chargebacks?start=2025-10-01T00%3A00%3A00.000Z&end=2025-10-31T23%3A59%3A59.999Z HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": "feab0694bd16cf2c83b372cede7fbe0b",
      "amount": 1,
      "fan": {
        "id": "000000000"
      },
      "type": "Tip from",
      "status": "undo",
      "chargeback_timestamp": "2025-08-05T14:50:07.000Z",
      "transaction_timestamp": "2025-08-05T12:01:42.000Z"
    },
    {
      "id": "3760ed0c1770ff18a663b3123acfab31",
      "amount": 16,
      "fan": {
        "id": "000000000"
      },
      "type": "Payment for message",
      "status": "undo",
      "chargeback_timestamp": "2025-07-31T09:05:13.000Z",
      "transaction_timestamp": "2025-07-28T04:02:27.000Z"
    }
  ],
  "cursor": "dHN4"
}

Retrieve transactions for a platform account

get

Rate limit: 15 requests per second

Required permission: dashboard.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
platformstring · enumRequired

Name of the platform. Supported values: "onlyfans", "fansly".

Example: onlyfansPossible values:
platform_account_idany ofRequired
string · max: 19Optional

Big integer id as string

Example: 1Pattern: ^(0|[1-9]\d*)$
or
stringOptional
Query parameters
startstring · date-timeRequired

Start of the transaction timestamp range (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
endstring · date-timeRequired

End of the transaction timestamp range (ISO 8601 Zulu).

Example: 2025-10-31T23:59:59.999Z
limitinteger · min: 10 · max: 1000Optional

Items per page (min: 10, max: 1000, default: 100).

Example: 100
cursorstring · max: 512Optional

Pagination cursor returned from the previous request.

Responses
200

Default Response

application/json
cursorstringOptional

Base64-encoded cursor for paginating subsequent results. Present only if additional pages exist.

get/api/v0/platforms/{platform}/accounts/{platform_account_id}/transactions
GET /api/v0/platforms/{platform}/accounts/{platform_account_id}/transactions?start=2026-01-01T00%3A00%3A00.000Z&end=2026-01-01T00%3A00%3A00.000Z HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": "text",
      "amount": 1,
      "fan": {
        "id": "1"
      },
      "type": "text",
      "status": "text",
      "timestamp": "2026-01-01T00:00:00.000Z"
    }
  ],
  "cursor": ""
}

Retrieve user metrics for OnlyFans platform

get

Rate limit: 15 requests per second

Required permission: team_metrics.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Query parameters
fromstring · date-timeRequired

Start of the metrics timestamp range (ISO 8601 Zulu).

Example: 2025-10-01T00:00:00.000Z
tostring · date-timeRequired

End of the metrics timestamp range (ISO 8601 Zulu).

Example: 2025-10-31T23:59:59.999Z
creator_idsinteger[] · min: 1 · max: 100Optional

Array of creator IDs to filter metrics by.

user_idsinteger[] · min: 1 · max: 100Optional

Array of user IDs to filter metrics by.

account_group_idintegerOptional

Account group ID to filter metrics by.

role_idintegerOptional

Role ID to filter metrics by.

offsetintegerRequired

Offset for pagination.

Default: 0
limitinteger · min: 1 · max: 100Required

Limit for pagination (max 100).

Default: 100
Responses
200

User metrics successfully retrieved.

application/json
get/api/v0/users/metrics
GET /api/v0/users/metrics?from=2025-10-01T00%3A00%3A00.000Z&to=2025-10-31T23%3A59%3A59.999Z&offset=0&limit=100 HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "user_id": 123,
      "creator_ids": [
        456,
        789
      ],
      "fans_count": 150,
      "messages_count": 320,
      "template_messages_count": 50,
      "ai_generated_messages_count": 30,
      "copied_messages_count": 10,
      "media_messages_count": 100,
      "paid_messages_count": 25,
      "free_media_messages_count": 80,
      "paid_messages_price_sum": 500.5,
      "words_count_sum": 5000,
      "typed_messages_count": 200,
      "unsent_messages_count": 5,
      "purchase_interval_avg": 3600,
      "reply_time_avg": 120,
      "posts_count": 45,
      "deleted_posts_count": 2,
      "work_time": 28800,
      "break_time": 3600,
      "sold_messages_count": 20,
      "sold_messages_price_sum": 400,
      "total_sold_messages_count": 50,
      "total_sold_messages_price_sum": 1000,
      "purchase_interval_min": 300,
      "purchase_interval_max": 7200,
      "sold_posts_count": 10,
      "sold_posts_price_sum": 200,
      "total_sold_posts_count": 25,
      "tips_amount_sum": 150,
      "total_tips_amount_sum": 300,
      "chargedback_tips_amount_sum": 10,
      "chargedback_posts_price_sum": 20,
      "chargedback_posts_count": 1,
      "chargedback_messages_price_sum": 15,
      "chargedback_messages_count": 1,
      "total_chargedback_tips_amount_sum": 25,
      "total_chargedback_posts_price_sum": 40,
      "total_chargedback_posts_count": 2,
      "total_chargedback_messages_price_sum": 30,
      "total_chargedback_messages_count": 2,
      "internal_templates_count": 15
    }
  ]
}

Retrieve organisation members

get

Rate limit: 15 requests per second

Required permission: team_metrics.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Query parameters
limitinteger · min: 1 · max: 50Required

Number of members to return (min: 1, max: 50).

Example: 20
offsetintegerRequired

Number of members to skip for pagination.

Example: 0
Responses
200

List of organisation members successfully retrieved.

application/json
get/api/v0/members
GET /api/v0/members?limit=20&offset=0 HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "users": [
    {
      "id": 1,
      "avatar": "https://example.com/avatar.jpg",
      "name": "Alice Johnson",
      "email": "alice@example.com",
      "createdAt": "2025-01-15T09:00:00Z",
      "customName": "text"
    }
  ]
}

Retrieve vault folders for a platform account. (For OnlyFans account only)

get

Rate limit: 5 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Query parameters
limitinteger · min: 1 · max: 10OptionalDefault: 10
offsetintegerOptionalDefault: 0
Responses
200

Default Response

application/json
get/api/v0/accounts/{account_id}/vault/folders
GET /api/v0/accounts/{account_id}/vault/folders HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": 1,
      "type": "text",
      "name": "text",
      "has_media": true,
      "can_update": true,
      "can_delete": true,
      "videos_count": 1,
      "photos_count": 1,
      "gifs_count": 1,
      "audios_count": 1
    }
  ]
}

Retrieve medias from a vault folder. (For OnlyFans account only)

get

Rate limit: 5 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
folder_idstring · min: 1 · max: 100RequiredPattern: ^[0-9]+$
Query parameters
limitinteger · min: 1 · max: 10OptionalDefault: 10
offsetintegerOptionalDefault: 0
typestring · enumOptionalDefault: allPossible values:
Responses
200

Default Response

application/json
get/api/v0/accounts/{account_id}/vault/folders/{folder_id}/medias
GET /api/v0/accounts/{account_id}/vault/folders/{folder_id}/medias HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": 1,
      "type": "text",
      "can_view": true,
      "is_ready": true,
      "has_error": true,
      "converted_to_video": true,
      "created_at": "text",
      "thumbnail_url": "text"
    }
  ]
}

Stream a media thumbnail from the vault. (For OnlyFans account only)

get

Rate limit: 3 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
media_idinteger · min: 1Required
Responses
200

Default Response

application/octet-stream
string · binaryOptional
get/api/v0/accounts/{account_id}/vault/media/{media_id}/thumbnail
GET /api/v0/accounts/{account_id}/vault/media/{media_id}/thumbnail HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
binary

List media uploads for a vault account.

get

Rate limit: 3 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Query parameters
limitinteger · min: 1 · max: 100OptionalDefault: 10
offsetintegerOptionalDefault: 0
expiredbooleanOptional
Responses
200

Default Response

application/json
totalintegerRequired
get/api/v0/accounts/{account_id}/vault/medias/uploads
GET /api/v0/accounts/{account_id}/vault/medias/uploads HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": "text",
      "status": "uploaded",
      "media_id": "text",
      "metadata": {
        "name": "text",
        "size": 1,
        "content_type": "text",
        "duration": 1,
        "key": "text",
        "e_tag": "text",
        "get_url": "text",
        "export_type": "text",
        "export_fan_id": "text",
        "rf_guest": [
          "text"
        ],
        "rf_partner": [
          "text"
        ],
        "rf_tag": [
          "text"
        ]
      },
      "created_at": "text",
      "updated_at": "text"
    }
  ],
  "total": 1
}

Start a new vault media upload.

post

Rate limit: 3 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Body
namestring · min: 1 · max: 255RequiredPattern: ^[\w. \-()]{1,255}$
sizeinteger · min: 1 · max: 5368709120Required
content_typestring · min: 1 · max: 255RequiredPattern: ^(image|video|audio)/[a-zA-Z0-9.+-]+$
durationnumberOptional
Responses
200

Default Response

application/json
or
post/api/v0/accounts/{account_id}/vault/medias/uploads/start
POST /api/v0/accounts/{account_id}/vault/medias/uploads/start HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 59

{
  "name": "text",
  "size": 1,
  "content_type": "text",
  "duration": 1
}
{
  "get_url": "text",
  "put_url": "text",
  "key": "text"
}

Finish a multipart vault media upload.

post

Rate limit: 3 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Body
keystring · min: 1 · max: 1024Required
upload_idstring · min: 1 · max: 256Required
Responses
200

Default Response

application/json
e_tagstringRequired
post/api/v0/accounts/{account_id}/vault/medias/uploads/finish
POST /api/v0/accounts/{account_id}/vault/medias/uploads/finish HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 69

{
  "key": "text",
  "upload_id": "text",
  "parts": [
    {
      "part": 1,
      "e_tag": "text"
    }
  ]
}
{
  "e_tag": "text"
}

Export an uploaded media to the vault.

post

Rate limit: 3 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Body
namestring · min: 1 · max: 255RequiredPattern: ^[\w. \-()]{1,255}$
sizeinteger · min: 1 · max: 5368709120Required
content_typestring · min: 1 · max: 255RequiredPattern: ^(image|video|audio)/[a-zA-Z0-9.+-]+$
durationnumberOptional
keystring · min: 1 · max: 1024Required
e_tagstring · min: 1 · max: 256Required
get_urlstring · uri · min: 1 · max: 2048Required
export_typestring · enumRequiredPossible values:
export_fan_idstring · min: 1Optional
rf_gueststring[]Optional

Big integer id as string

Example: 1
rf_partnerstring[]Optional

Big integer id as string

Example: 1
rf_tagstring[]Optional

Big integer id as string

Example: 1
Responses
200

Default Response

application/json
idstringRequired
statusstring · enumRequiredPossible values:
media_idstring · nullableRequired
created_atstringRequired
updated_atstringRequired
post/api/v0/accounts/{account_id}/vault/medias/uploads/export
POST /api/v0/accounts/{account_id}/vault/medias/uploads/export HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 214

{
  "name": "text",
  "size": 1,
  "content_type": "text",
  "duration": 1,
  "key": "text",
  "e_tag": "text",
  "get_url": "https://example.com",
  "export_type": "post",
  "export_fan_id": "text",
  "rf_guest": [
    "1"
  ],
  "rf_partner": [
    "1"
  ],
  "rf_tag": [
    "1"
  ]
}
{
  "id": "text",
  "status": "uploaded",
  "media_id": "text",
  "metadata": {
    "name": "text",
    "size": 1,
    "content_type": "text",
    "duration": 1,
    "key": "text",
    "e_tag": "text",
    "get_url": "text",
    "export_type": "text",
    "export_fan_id": "text",
    "rf_guest": [
      "text"
    ],
    "rf_partner": [
      "text"
    ],
    "rf_tag": [
      "text"
    ]
  },
  "created_at": "text",
  "updated_at": "text"
}

Retry a failed vault media upload.

post

Rate limit: 3 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
upload_idstring · uuidRequired
Responses
200

Default Response

application/json
idstringRequired
statusstring · enumRequiredPossible values:
media_idstring · nullableRequired
created_atstringRequired
updated_atstringRequired
post/api/v0/accounts/{account_id}/vault/medias/uploads/{upload_id}/retry
POST /api/v0/accounts/{account_id}/vault/medias/uploads/{upload_id}/retry HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "id": "text",
  "status": "uploaded",
  "media_id": "text",
  "metadata": {
    "name": "text",
    "size": 1,
    "content_type": "text",
    "duration": 1,
    "key": "text",
    "e_tag": "text",
    "get_url": "text",
    "export_type": "text",
    "export_fan_id": "text",
    "rf_guest": [
      "text"
    ],
    "rf_partner": [
      "text"
    ],
    "rf_tag": [
      "text"
    ]
  },
  "created_at": "text",
  "updated_at": "text"
}

Verify a fan link before exporting vault media. (For OnlyFans account only)

post

Rate limit: 3 requests per second

Required permission: media_uploader.manage

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

Big integer id as string

Example: {"value":"1"}Pattern: ^(0|[1-9]\d*)$
Body
fan_linkstring · min: 1 · max: 2048RequiredPattern: ^https?://(www\.)?onlyfans\.com/
Responses
200

Default Response

application/json
fan_idstring · min: 1Required
post/api/v0/accounts/{account_id}/vault/medias/uploads/fans/verify
POST /api/v0/accounts/{account_id}/vault/medias/uploads/fans/verify HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 19

{
  "fan_link": "text"
}
{
  "fan_id": "text"
}

Retrieve the Auto Messages campaigns of an account

get

Rate limit: 5 requests per second

Required permission: auto_messages.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account whose campaigns are read.

Example: 12345Pattern: ^(0|[1-9]\d*)$
Query parameters
limitinteger · min: 1 · max: 100Optional

Items per page (min: 1, max: 100, default: 50).

Default: 50
offsetintegerOptional

Items to skip (default: 0).

Default: 0
include_archivedbooleanOptional

Include archived campaigns in the page (default: false). Only archived is affected — paused, unsending and unsent campaigns are always returned.

Default: false
Responses
200

A page of the account Auto Messages campaigns.

application/json

A page of the account Auto Messages campaigns.

has_morebooleanRequired

True when more campaigns exist beyond this page.

get/api/v0/accounts/{account_id}/auto-message-campaigns
GET /api/v0/accounts/{account_id}/auto-message-campaigns HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "items": [
    {
      "id": "4312",
      "account_id": "12345",
      "name": "text",
      "trigger": "welcome_message",
      "action": "send_message",
      "status": "active",
      "created_by": {
        "type": "user",
        "id": "42"
      },
      "created_at": "2026-01-01T00:00:00.000Z",
      "rules": {
        "send_delay_interval": {
          "min_sec": 1,
          "range_sec": 1
        },
        "send_after_expire_min": 1,
        "send_before_expire_min": 1,
        "unsend_delay_sec": 1,
        "unsend_if_not_read_enabled": true,
        "unsend_if_not_replied_enabled": true,
        "retry_after_unsend_min": 1,
        "end_at": "2026-01-01T00:00:00.000Z",
        "mimic_on_reply_enabled": true
      },
      "audience_filters": [
        {
          "kind": "purchased_from_organisation",
          "mode": "include",
          "options": {
            "from_at": "2026-01-01T00:00:00.000Z",
            "to_at": "2026-01-01T00:00:00.000Z"
          }
        }
      ],
      "messages": [
        {
          "step": 0,
          "text": "text",
          "price_gross": 9.99,
          "delay_sec": 1,
          "attachments": [
            {
              "id": "1289402",
              "type": "image",
              "is_paid": true
            }
          ],
          "text_is_paid": true,
          "tagged_platform_account_ids": [
            "67890"
          ]
        }
      ],
      "targeted_sends_count": 1,
      "first_message_stats": {
        "sent_messages_count": 1,
        "unsent_messages_count": 1,
        "replied_messages_count": 1,
        "purchased_messages_count": 1,
        "purchased_amount_gross": 1,
        "reply_rate": 1,
        "purchase_rate": 1
      },
      "follow_up_message_stats": [
        {
          "step": 1,
          "sent_messages_count": 1,
          "unsent_messages_count": 1,
          "replied_messages_count": 1,
          "purchased_messages_count": 1,
          "purchased_amount_gross": 1,
          "reply_rate": 1,
          "purchase_rate": 1
        }
      ]
    }
  ],
  "has_more": true
}

Create an Auto Messages campaign

post

Rate limit: 5 requests per second

The campaign starts running as soon as it is created: it begins matching fans the moment this request is answered. There is no way to stage one — use the status endpoint to pause it.

An empty audience_filters targets every fan that fires the trigger. Campaigns here are trigger-driven and send one message per fan event, so this is the ordinary shape of a welcome campaign rather than a broadcast.

audience_filters[].options.lists[].name is accepted and never published back: a name is required for each fan list, while the read endpoints carry identifiers alone.

This endpoint is not idempotent. A request that times out may still have created a running campaign. Before retrying, list the account campaigns and look for one already there; a duplicate can be stopped with the status endpoint. Listing the campaigns needs auto_messages.view in addition to auto_messages.edit.

Required permission: auto_messages.edit

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account whose campaigns are read.

Example: 12345Pattern: ^(0|[1-9]\d*)$
Body
triggerstring · enumRequiredPossible values:
actionstring · enumRequiredPossible values:
namestring · min: 1 · max: 512 · nullableOptional

Campaign name. Required for a sequence and for a message that carries media but no text.

Pattern: \S
Responses
201

One Auto Messages campaign of the account.

application/json

One Auto Messages campaign of the account.

idstring · max: 19Required

Campaign identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
account_idstring · max: 19Required

OnlyMonster account the campaign belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
namestring · nullableRequired

Campaign name as the account owner set it. Null when the campaign has none.

triggerstring · enumRequiredPossible values:
actionstring · enum · nullableRequired

What the campaign does when the trigger fires. send_message — sends the messages listed in messages. start_mimic — opens a Mimic chat instead of sending; such a campaign has no messages. Null when this version of the API does not name the action. Such a campaign reports no messages either, since what its content means depends on what it does with it.

Example: send_messagePossible values:
statusstring · enumRequiredPossible values:
created_atstring · date-timeRequired

When the campaign was created (ISO 8601 Zulu).

targeted_sends_countintegerRequired

Dispatches the campaign has made since it was created. Cumulative: a fan targeted twice counts twice, and the figure never decreases.

post/api/v0/accounts/{account_id}/auto-message-campaigns
POST /api/v0/accounts/{account_id}/auto-message-campaigns HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 713

{
  "trigger": "welcome_message",
  "action": "send_message",
  "name": null,
  "rules": {
    "send_delay_interval": {
      "min_sec": 60,
      "range_sec": 120
    },
    "send_after_expire_min": 1440,
    "send_before_expire_min": 1440,
    "unsend_delay_sec": 1,
    "unsend_if_not_read_enabled": true,
    "unsend_if_not_replied_enabled": true,
    "retry_after_unsend_min": 1440,
    "end_at": null,
    "mimic_on_reply_enabled": true
  },
  "audience_filters": [
    {
      "kind": "purchased_from_organisation",
      "mode": "include",
      "options": {
        "from_at": "2026-01-01T00:00:00.000Z",
        "to_at": "2026-01-01T00:00:00.000Z",
        "from_days": 1,
        "to_days": 1
      }
    }
  ],
  "messages": [
    {
      "text": null,
      "price_gross": 0,
      "delay_sec": 1,
      "attachments": [
        {
          "id": "text",
          "type": "image",
          "is_paid": true
        }
      ],
      "text_is_paid": true,
      "tagged_platform_account_ids": [
        "1"
      ]
    }
  ]
}
{
  "id": "4312",
  "account_id": "12345",
  "name": "text",
  "trigger": "welcome_message",
  "action": "send_message",
  "status": "active",
  "created_by": {
    "type": "user",
    "id": "42"
  },
  "created_at": "2026-01-01T00:00:00.000Z",
  "rules": {
    "send_delay_interval": {
      "min_sec": 1,
      "range_sec": 1
    },
    "send_after_expire_min": 1,
    "send_before_expire_min": 1,
    "unsend_delay_sec": 1,
    "unsend_if_not_read_enabled": true,
    "unsend_if_not_replied_enabled": true,
    "retry_after_unsend_min": 1,
    "end_at": "2026-01-01T00:00:00.000Z",
    "mimic_on_reply_enabled": true
  },
  "audience_filters": [
    {
      "kind": "purchased_from_organisation",
      "mode": "include",
      "options": {
        "from_at": "2026-01-01T00:00:00.000Z",
        "to_at": "2026-01-01T00:00:00.000Z"
      }
    }
  ],
  "messages": [
    {
      "step": 0,
      "text": "text",
      "price_gross": 9.99,
      "delay_sec": 1,
      "attachments": [
        {
          "id": "1289402",
          "type": "image",
          "is_paid": true
        }
      ],
      "text_is_paid": true,
      "tagged_platform_account_ids": [
        "67890"
      ]
    }
  ],
  "targeted_sends_count": 1,
  "first_message_stats": {
    "sent_messages_count": 1,
    "unsent_messages_count": 1,
    "replied_messages_count": 1,
    "purchased_messages_count": 1,
    "purchased_amount_gross": 1,
    "reply_rate": 1,
    "purchase_rate": 1
  },
  "follow_up_message_stats": [
    {
      "step": 1,
      "sent_messages_count": 1,
      "unsent_messages_count": 1,
      "replied_messages_count": 1,
      "purchased_messages_count": 1,
      "purchased_amount_gross": 1,
      "reply_rate": 1,
      "purchase_rate": 1
    }
  ]
}

Retrieve one Auto Messages campaign

get

Rate limit: 5 requests per second

Required permission: auto_messages.view

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account the campaign belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
campaign_idstring · max: 19Required

Campaign identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
Responses
200

One Auto Messages campaign of the account.

application/json

One Auto Messages campaign of the account.

idstring · max: 19Required

Campaign identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
account_idstring · max: 19Required

OnlyMonster account the campaign belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
namestring · nullableRequired

Campaign name as the account owner set it. Null when the campaign has none.

triggerstring · enumRequiredPossible values:
actionstring · enum · nullableRequired

What the campaign does when the trigger fires. send_message — sends the messages listed in messages. start_mimic — opens a Mimic chat instead of sending; such a campaign has no messages. Null when this version of the API does not name the action. Such a campaign reports no messages either, since what its content means depends on what it does with it.

Example: send_messagePossible values:
statusstring · enumRequiredPossible values:
created_atstring · date-timeRequired

When the campaign was created (ISO 8601 Zulu).

targeted_sends_countintegerRequired

Dispatches the campaign has made since it was created. Cumulative: a fan targeted twice counts twice, and the figure never decreases.

get/api/v0/accounts/{account_id}/auto-message-campaigns/{campaign_id}
GET /api/v0/accounts/{account_id}/auto-message-campaigns/{campaign_id} HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*
{
  "id": "4312",
  "account_id": "12345",
  "name": "text",
  "trigger": "welcome_message",
  "action": "send_message",
  "status": "active",
  "created_by": {
    "type": "user",
    "id": "42"
  },
  "created_at": "2026-01-01T00:00:00.000Z",
  "rules": {
    "send_delay_interval": {
      "min_sec": 1,
      "range_sec": 1
    },
    "send_after_expire_min": 1,
    "send_before_expire_min": 1,
    "unsend_delay_sec": 1,
    "unsend_if_not_read_enabled": true,
    "unsend_if_not_replied_enabled": true,
    "retry_after_unsend_min": 1,
    "end_at": "2026-01-01T00:00:00.000Z",
    "mimic_on_reply_enabled": true
  },
  "audience_filters": [
    {
      "kind": "purchased_from_organisation",
      "mode": "include",
      "options": {
        "from_at": "2026-01-01T00:00:00.000Z",
        "to_at": "2026-01-01T00:00:00.000Z"
      }
    }
  ],
  "messages": [
    {
      "step": 0,
      "text": "text",
      "price_gross": 9.99,
      "delay_sec": 1,
      "attachments": [
        {
          "id": "1289402",
          "type": "image",
          "is_paid": true
        }
      ],
      "text_is_paid": true,
      "tagged_platform_account_ids": [
        "67890"
      ]
    }
  ],
  "targeted_sends_count": 1,
  "first_message_stats": {
    "sent_messages_count": 1,
    "unsent_messages_count": 1,
    "replied_messages_count": 1,
    "purchased_messages_count": 1,
    "purchased_amount_gross": 1,
    "reply_rate": 1,
    "purchase_rate": 1
  },
  "follow_up_message_stats": [
    {
      "step": 1,
      "sent_messages_count": 1,
      "unsent_messages_count": 1,
      "replied_messages_count": 1,
      "purchased_messages_count": 1,
      "purchased_amount_gross": 1,
      "reply_rate": 1,
      "purchase_rate": 1
    }
  ]
}

Start, pause or archive an Auto Messages campaign

patch

Rate limit: 5 requests per second

Asking for the state the campaign is already in is accepted and does not change the campaign, but it is not free: the change is carried out again, which is how a change that did not complete is retried. If the answer is 502, repeat the same request to complete the change; after a 204 there is nothing to repeat. Every request, a repeat included, counts toward the rate limit.

Required permission: auto_messages.edit

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account the campaign belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
campaign_idstring · max: 19Required

Campaign identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
Body

State to move the campaign to. active — the campaign reacts to its trigger again. paused — the campaign stops reacting and keeps what it already queued. archived — the campaign stops for good and its pending queue is cleared.

statusstring · enumRequiredPossible values:
Responses
204

The status was changed and the change was confirmed.

No content

patch/api/v0/accounts/{account_id}/auto-message-campaigns/{campaign_id}/status
PATCH /api/v0/accounts/{account_id}/auto-message-campaigns/{campaign_id}/status HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 19

{
  "status": "active"
}

No content

Recall what an Auto Messages campaign has sent

post

Rate limit: 5 requests per second

The campaign stops sending, its queue is cleared, and the messages it delivered within the last 24 hours are taken back out of the fans' chats. Anything older stays: the platform allows no recall beyond that window.

This cannot be undone and it is not limited to campaigns this API created. Any campaign of the account can be recalled, including one a member built in the panel.

Unlike a status change, repeating this request is not always safe: a campaign that is already recalling refuses it. If the answer is 502, read the campaign before repeating — recalling or recalled means the recall started and finishes on its own, while active or paused means it never started and only a repeat performs it. Reading the campaign needs auto_messages.view in addition to auto_messages.edit.

Required permission: auto_messages.edit

Authorizations
x-om-auth-tokenstringRequired

API token for authentication

Path parameters
account_idstring · max: 19Required

OnlyMonster account the campaign belongs to.

Example: 12345Pattern: ^(0|[1-9]\d*)$
campaign_idstring · max: 19Required

Campaign identifier.

Example: 4312Pattern: ^(0|[1-9]\d*)$
Responses
204

The recall was accepted: the campaign stops sending and takes back what it can.

No content

post/api/v0/accounts/{account_id}/auto-message-campaigns/{campaign_id}/unsend
POST /api/v0/accounts/{account_id}/auto-message-campaigns/{campaign_id}/unsend HTTP/1.1
Host: omapi.onlymonster.ai
x-om-auth-token: YOUR_API_KEY
Accept: */*

No content

Last updated

Was this helpful?