Involve Asia Offers API
The Offers API from Involve Asia — 2 operation(s) for offers.
The Offers API from Involve Asia — 2 operation(s) for offers.
openapi: 3.1.0
info:
title: Involve Asia Publisher Auth Offers API
version: v2
description: 'Public-facing Publisher API. Bearer JWT auth (2 hours TTL). Throttle: 60 requests / minute per account.'
license:
name: Proprietary — Involve Asia
url: https://involve.asia/
servers:
- url: https://api.involve.asia/api
security:
- bearerAuth: []
tags:
- name: Offers
paths:
/offers/all:
post:
operationId: offersAll
summary: All offers
description: Paginated list of offers you have access to. Filter by country, category, application status, and offer status.
tags:
- Offers
parameters:
- name: Authorization
in: header
required: true
description: Bearer {token}
schema:
type: string
security:
- bearerAuth: []
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
page:
type: integer
description: Page number (default 1).
limit:
type: integer
description: Page size, default 100, max 100.
sort_by:
type: string
description: '`relevance` (default) · `show_latest_first` · `show_oldest_first` · `a_to_z` · `z_to_a` · `highest_commision_percent` · `lowest_commision_percent` · `highest_flat_payout` · `lowest_flat_payout`.'
filters[offer_id]:
type: string
description: Pipe-separated list, e.g. `25|5126`.
filters[offer_name]:
type: string
description: Substring match on offer name.
filters[offer_country]:
type: string
description: Pipe-separated country names (English), e.g. `Malaysia|Indonesia`.
filters[offer_type]:
type: string
description: 'Pipe-separated payout types: `cpa|cps|cpa_both|cpc|cpm`.'
filters[categories]:
type: string
description: Pipe-separated, e.g. `Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel`.
filters[application_status]:
type: string
description: 'Pipe-separated: `Approved|Blocked|Pending|Rejected`. Added 2024-10-01.'
filters[offer_status]:
type: string
description: 'Pipe-separated: `Active|Paused`. Added 2024-10-01.'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEnvelope'
'401':
description: Unauthorized. May indicate (a) bad/expired token — re-auth and retry once, OR (b) missing required params (validation errors are returned with status 401 today, not 422). Inspect the `message` field. Token errors may also break the standard envelope (e.g. `{message, status_code}` with no `status` key).
'429':
description: Rate limit exceeded. Back off 250 → 500 → 1000 ms.
'500':
description: Server-side error. On `/deeplink/generate`, a 500 is also returned for invalid `offer_id` or non-whitelisted destination URLs — these are PERMANENT client errors despite the 5xx code. Inspect `message`; retry only if you have reason to believe the request was previously valid.
/offers/last-updated-range:
post:
operationId: offersLastUpdatedRange
summary: Last-updated offers
description: Pull only offers whose `datetime_updated` falls within a window. Cheaper than /offers/all for delta sync.
tags:
- Offers
parameters:
- name: Authorization
in: header
required: true
description: Bearer {token}
schema:
type: string
security:
- bearerAuth: []
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
start_date:
type: string
description: Inclusive start, `YYYY-MM-DD HH:MM:SS`.
end_date:
type: string
description: Inclusive end, `YYYY-MM-DD HH:MM:SS`.
page:
type: integer
description: Page number (default 1).
limit:
type: integer
description: Page size, default 100, max 100.
sort_by:
type: string
description: Same options as /offers/all.
filters[offer_country]:
type: string
description: Pipe-separated country names.
filters[categories]:
type: string
description: Pipe-separated categories.
filters[application_status]:
type: string
description: 'Pipe-separated: `Approved|Blocked|Pending|Rejected`.'
filters[offer_status]:
type: string
description: 'Pipe-separated: `Active|Paused`.'
required:
- start_date
- end_date
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEnvelope'
'401':
description: Unauthorized. May indicate (a) bad/expired token — re-auth and retry once, OR (b) missing required params (validation errors are returned with status 401 today, not 422). Inspect the `message` field. Token errors may also break the standard envelope (e.g. `{message, status_code}` with no `status` key).
'429':
description: Rate limit exceeded. Back off 250 → 500 → 1000 ms.
'500':
description: Server-side error. On `/deeplink/generate`, a 500 is also returned for invalid `offer_id` or non-whitelisted destination URLs — these are PERMANENT client errors despite the 5xx code. Inspect `message`; retry only if you have reason to believe the request was previously valid.
components:
schemas:
ResponseEnvelope:
type: object
required:
- status
- data
properties:
status:
type: string
description: '`success` or `error`.'
examples:
- success
message:
type: string
description: Human-readable status message.
data:
description: 'Endpoint-specific payload. Paginated list endpoints wrap a `{ page, limit, count, nextPage, data: [...] }` object here; single-record endpoints place the record directly.'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT