> ## Documentation Index
> Fetch the complete documentation index at: https://onlytraffic.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# RevShare-офферы

> The RevShare offer catalog — OnlyFans models available for promotion, with their commission terms, payout guarantee and 7-day performance. Mirrors the Offers page of the marketer cabinet.

Filters can be passed as query parameters or as a JSON body.

Каталог RevShare-офферов: модели OnlyFans, которых можно продвигать, с условиями комиссии, гарантией выплат и показателями за последние 7 дней. Возвращает те же данные, что и страница **Offers** в дашборде партнёра.

Используйте его, чтобы подбирать модели автоматически. Например, можно найти все офферы, которые разрешают ваш источник трафика и на которых у вас ещё нет запущенной кампании.

## Фильтры

Передавайте фильтры как query-параметры или в JSON-теле. Их можно комбинировать.

| Фильтр                  | Описание                                                                                                                               |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `search`                | Ищет по названию оффера, а также по username в OnlyFans, если модель сделала его публичным                                             |
| `of_account_id`         | Один конкретный аккаунт OnlyFans                                                                                                       |
| `source`                | Только офферы, где этот источник трафика не запрещён                                                                                   |
| `unused_source`         | То же, что `source`, но дополнительно исключает модели, у которых уже есть активная кампания с этого источника (от любого маркетолога) |
| `min_commission`        | Минимальный процент RevShare                                                                                                           |
| `free_trial=1`          | Только офферы, которые разрешают free-trial кампании                                                                                   |
| `guaranteed=1`          | Только офферы, где депозит клиента полностью гарантирует выплаты                                                                       |
| `paid_subscription`     | `1` только платные аккаунты, `0` только бесплатные                                                                                     |
| `available=1`           | Только офферы, где модель предоставила доступ к аккаунту, то есть кампанию можно запустить                                             |
| `without_my_campaign=1` | Только офферы, на которых у вас ещё нет активной RevShare-кампании                                                                     |

Сортируйте через `sort` (`date_add`, `commission`, `arpu_w`, `arpu_m`, `arpu_y`, `likes`, `subscribers`, `performer_top`, `income`) и `order` (`asc` / `desc`). По умолчанию сначала идут самые новые офферы (`date_add`, `desc`).

## Можно ли запустить кампанию?

* `can_start_campaign`: можете ли вы прямо сейчас запустить новую кампанию на эту модель. Если `false`, причина указана в `cannot_start_reason`.
* `has_access`: `false` означает, что модель ещё не предоставила доступ к аккаунту. Её статистика неполная, и запустить кампанию нельзя.
* `my_campaigns` / `my_campaigns_limit`: сколько у вас активных кампаний на эту модель и сколько максимум разрешено на одну модель.
* `available_campaigns_limit` (верхний уровень ответа): сколько ещё RevShare-кампаний вы можете запустить всего. `null` означает, что лимита нет.

<Info>
  Перед тем как лить трафик, проверьте `prohibited_sources` и `blocked_countries`. Трафик с запрещённого источника или из заблокированной страны нарушает условия оффера.
</Info>


## OpenAPI

````yaml api/openapi-partners.json GET /api/marketer/revshare/offers
openapi: 3.0.2
info:
  title: OnlyTraffic Marketer API
  version: 2.1.0
  description: >-
    Partner (marketer) API for OnlyTraffic.


    **Authentication:** pass your API key in the `Authorization` header
    (`Authorization: your-api-key` or `Authorization: Bearer your-api-key`).
    Create keys in the partner cabinet: Tools -> API
    (https://partners.onlytraffic.com/tools/api). Up to 5 named keys per
    account, each **Full** or **Read-only**, with an optional expiry. Keys start
    with `ot_partners_` and are shown once, at creation. Read-only keys cannot
    call the `POST` endpoints (`error_code` 403, message `This API key is
    read-only`). An older legacy key keeps working with full access until you
    delete it on the same page.


    **Pagination:** all list endpoints accept `offset` (default 0) and `limit`
    (default 50, max 1000) as query parameters or JSON body fields.


    **Dates:** every timestamp field has two variants — an ISO 8601 string
    (`*_at`) and a Unix timestamp integer (`*_at_ts` / `*_ts`).


    **Writes:** a Full-access key reads and writes. Write endpoints are `POST`
    with a JSON body, accept public ids only (`revc_…`, `cplo_…`) and answer
    with the updated object in `data`. Rate limit: 120 requests per minute for
    reads, 30 per minute for writes, per account (shared by all its keys).
servers:
  - url: https://partners.onlytraffic.com
security: []
tags:
  - name: RevShare
    description: RevShare campaigns and financial data
  - name: CPL
    description: Cost-Per-Lead orders placed against your offers
  - name: CPC
    description: Cost-Per-Click orders and the category catalog
  - name: Subscribers
    description: Fans acquired through your campaigns
  - name: Stats
    description: Dashboard-style statistics widgets (fans, income, conversion)
  - name: Write
    description: >-
      Write API: start / stop / update campaigns and accept / reject / stop CPL
      campaigns (same key, same rules as the cabinet)
paths:
  /api/marketer/revshare/offers:
    get:
      tags:
        - RevShare
      summary: List RevShare offers
      description: >-
        The RevShare offer catalog — OnlyFans models available for promotion,
        with their commission terms, payout guarantee and 7-day performance.
        Mirrors the Offers page of the marketer cabinet.


        Filters can be passed as query parameters or as a JSON body.
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - name: of_account_id
          in: query
          schema:
            type: integer
          description: Filter by OnlyFans account numeric id.
        - name: search
          in: query
          schema:
            type: string
          description: >-
            Free-text search over the offer name and, when published, the
            OnlyFans username.
        - name: source
          in: query
          schema:
            type: string
          description: >-
            Traffic source slug. Keeps only offers where this source is not
            prohibited.
        - name: unused_source
          in: query
          schema:
            type: string
          description: >-
            Traffic source slug. Same as `source`, but additionally drops models
            that already have an active campaign from this source (any
            marketer).
        - name: min_commission
          in: query
          schema:
            type: number
          description: Minimum RevShare percent.
        - name: free_trial
          in: query
          schema:
            type: integer
            enum:
              - 0
              - 1
          description: 1 — only offers that allow free-trial campaigns.
        - name: guaranteed
          in: query
          schema:
            type: integer
            enum:
              - 0
              - 1
          description: >-
            1 — only offers whose payouts are fully guaranteed by the client's
            deposit.
        - name: paid_subscription
          in: query
          schema:
            type: integer
            enum:
              - 0
              - 1
          description: 1 — paid accounts only, 0 — free accounts only.
        - name: available
          in: query
          schema:
            type: integer
            enum:
              - 0
              - 1
          description: >-
            1 — only offers with account access provided, i.e. a campaign can be
            started.
        - name: without_my_campaign
          in: query
          schema:
            type: integer
            enum:
              - 0
              - 1
          description: 1 — only offers where you have no active RevShare campaign yet.
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - date_add
              - commission
              - arpu_w
              - arpu_m
              - arpu_y
              - likes
              - subscribers
              - performer_top
              - income
          description: 'Sort field. Default: date_add.'
        - name: order
          in: query
          schema:
            type: string
            enum:
              - asc
              - desc
          description: 'Sort direction. Default: desc.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - title: Success
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - success
                      available_campaigns_limit:
                        type: integer
                        nullable: true
                        description: >-
                          How many more RevShare campaigns you may start in
                          total. null = unlimited.
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/RevShareOffer'
                  - $ref: '#/components/schemas/ErrorResponse'
              example:
                status: success
                available_campaigns_limit: 2
                data:
                  - of_account_id: 456789
                    of_username: modelname
                    name: Sweet Model
                    description: Active girl, daily posts
                    commission_percent: 40
                    payout_guarantee: full
                    subscribe_price: 9.99
                    performer_top: 3.5
                    likes_count: 87000
                    subscribers_count: 3400
                    arpu:
                      week: 4.12
                      month: 12.4
                      year: 31.7
                    stats_7d:
                      clicks: 1240
                      subscribers: 96
                      conversion: 7.74
                      new_subs_per_day: 21.43
                    sfs_level: none
                    campaign_types:
                      - campaign
                      - trial
                    trial_max_days: 7
                    active_campaigns: 12
                    my_campaigns: 1
                    my_campaigns_limit: 3
                    has_access: true
                    can_start_campaign: true
                    cannot_start_reason: null
                    prohibited_sources:
                      - reddit
                    blocked_countries:
                      - RU
                    onlyfans_account: {}
                    created_at: '2026-01-01T00:00:00+00:00'
                    created_at_ts: 1767225600
      security:
        - api_key: []
components:
  parameters:
    offset:
      name: offset
      in: query
      schema:
        type: integer
        default: 0
        minimum: 0
      description: Number of records to skip.
    limit:
      name: limit
      in: query
      schema:
        type: integer
        default: 50
        minimum: 1
        maximum: 1000
      description: Number of records to return.
  schemas:
    RevShareOffer:
      type: object
      properties:
        of_account_id:
          type: integer
          description: OnlyFans account numeric id.
        of_username:
          type: string
          nullable: true
          description: >-
            Real OnlyFans handle. null when the model does not allow publishing
            it.
        name:
          type: string
          description: Public offer name of the model.
        description:
          type: string
          nullable: true
          description: Offer description provided by the model/agency.
        commission_percent:
          type: number
          description: RevShare percent you get from your fans' NET transactions.
        payout_guarantee:
          type: string
          enum:
            - full
            - partial
            - none
          description: >-
            How well the client's deposit covers payouts: full — fully
            guaranteed, partial — deposit of $200+, none — not guaranteed.
        subscribe_price:
          type: number
          description: Regular subscription price. 0 = free account.
        performer_top:
          type: number
          description: OnlyFans top-percent rank. 0 = not ranked.
        likes_count:
          type: integer
        subscribers_count:
          type: integer
        arpu:
          type: object
          description: Average revenue per user. Values are null while not calculated yet.
          properties:
            week:
              type: number
              nullable: true
            month:
              type: number
              nullable: true
            year:
              type: number
              nullable: true
        stats_7d:
          type: object
          description: >-
            Campaign performance for this model over the last 7 days, across all
            marketers.
          properties:
            clicks:
              type: integer
            subscribers:
              type: integer
            conversion:
              type: number
              nullable: true
              description: subscribers / clicks, %. null when there were no clicks.
            new_subs_per_day:
              type: number
              description: Average new subscribers of the model per day.
        sfs_level:
          type: string
          enum:
            - none
            - medium
            - high
          description: >-
            How actively the model does SFS (shout-out) posts: high — 10+
            accounts in 7 days, medium — 2-10, none — 0-1.
        campaign_types:
          type: array
          items:
            type: string
            enum:
              - campaign
              - trial
          description: Campaign types this offer allows.
        trial_max_days:
          type: integer
          description: Max free-trial length in days. 0 = free trials not allowed.
        active_campaigns:
          type: integer
          description: Active campaigns of all marketers for this model.
        my_campaigns:
          type: integer
          description: Your active RevShare campaigns for this model.
        my_campaigns_limit:
          type: integer
          description: Max campaigns you may run per single model.
        has_access:
          type: boolean
          description: >-
            false when the model has not provided account access data yet —
            statistics are incomplete and campaigns cannot be started.
        can_start_campaign:
          type: boolean
        cannot_start_reason:
          type: string
          nullable: true
          description: Human-readable reason, present when can_start_campaign is false.
        prohibited_sources:
          type: array
          items:
            type: string
          description: Traffic source slugs you may NOT use for this model.
        blocked_countries:
          type: array
          items:
            type: string
        onlyfans_account:
          $ref: '#/components/schemas/OnlyfansAccount'
        created_at:
          type: string
          format: date-time
          nullable: true
          description: When the offer was published on the platform.
        created_at_ts:
          type: integer
          nullable: true
    ErrorResponse:
      title: Error
      type: object
      properties:
        status:
          type: string
          enum:
            - error
        message:
          type: string
          description: Human-readable error description.
        error_code:
          type: integer
          description: >-
            403: access denied (missing / unknown / expired / revoked key, or
            the account is not an active partner: `Error! Access denied`; a
            Read-only key calling a write endpoint: `This API key is
            read-only`). 404: not found. 422: bad request params (message says
            what is wrong). 429: rate limit exceeded (a `Retry-After` header is
            set) or another campaign start is still running. 500: server error.
            503: the platform did not answer a write in time, retry later.
    OnlyfansAccount:
      type: object
      description: Cached snapshot of the OnlyFans model profile.
      properties:
        name:
          type: string
        username:
          type: string
        about:
          type: string
        tags:
          type: array
          items:
            type: string
        avatar:
          type: object
          properties:
            original:
              type: string
              format: uri
            thumbnail:
              type: string
              format: uri
            thumbnail_640:
              type: string
              format: uri
        demo_content:
          type: array
          description: >-
            Model's demo photos/videos. Empty for finished campaigns and for
            completed/rejected CPL campaigns.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - photo
                  - video
              url:
                type: string
                format: uri
              thumbnail:
                type: string
                format: uri
        regular_price:
          type: number
        promotions:
          type: array
        blocked_countries:
          type: array
          items:
            type: string
        subscribers_count:
          type: integer
        likes_count:
          type: integer
        posts_count:
          type: integer
        photos_count:
          type: integer
        videos_count:
          type: integer
        performer_top:
          type: number
          description: Top percentage among all performers (e.g. 5 = top 5%).
  securitySchemes:
    api_key:
      type: apiKey
      name: Authorization
      in: header
      description: >-
        API key from the partner cabinet, Tools -> API
        (https://partners.onlytraffic.com/tools/api): up to 5 named keys per
        account, each Full or Read-only, `ot_partners_` prefix, shown once at
        creation. Raw value or `Bearer` form. Read-only keys cannot call the
        `POST` endpoints (403 `This API key is read-only`); expired or revoked
        keys get 403 `Error! Access denied`.

````