OnwardOnward
  • Public docs
  • Internal docs
  • Guides
  • Public API Reference
  • Internal documentation
Information
Users API
Account Connection API
Events API
Rewards API
Quest chain API
Schemas
Onward Public API
Onward Public API

Schemas


QuestChainsOutput

Payload of user's chains response: every active quest chain of one platform user.
​object · required

Temporary authorization and baseline for quest chain polling.

​object[] · required

Active quest chains of the user, each with its tasks and progress. Empty when the user exists but takes part in no active chain, and also empty when the user is unknown — read user.exists to tell those apart.

​object[] · required

Tasks from past (expired or completed) quest chains whose reward has not yet been claimed. The user may call the reward-claim endpoint for any of these.

​object · required

Facts about the requested user that hold regardless of chain membership.

setup_status
​string · enum

Initial quest-chain setup state: not_started for an unknown user, pending while durable registration work remains retryable, ready after setup completes, and failed after retries are exhausted.

Enum values:
not_started
pending
ready
failed

QuestChainItem

One quest chain together with its tasks and the user's progress in it.
​object · required

The quest chain this entry describes.

​object[] · required

Levels of the chain, ordered by order_by. Contains a single virtual level when levels are disabled.

​object · required

Progress of the requested user inside this chain.

​object · required

Final reward of this quest chain, or null when the chain has no final reward.

QuestChain

Metadata of a quest chain the user takes part in.
id
​string · uuid · required

Quest chain unique identifier.

name
​string · required

Quest chain name, safe to show to the user as is.

description
​null | string · required

Long-form quest chain description, or null when the chain has none.

logo_url
​null | string · required

Absolute URL of the chain logo, or null when the chain has none.

background_image_url
​null | string · required

Absolute URL of the chain background image, or null when the chain has none.

start_date
​null | string · required

Moment the chain becomes joinable, ISO 8601 with offset. Null means the chain has no explicit start and is governed by its status alone.

end_date
​null | string · required

Moment the chain stops accepting progress, ISO 8601 with offset. Null means the chain has no explicit end.

status
​string · enum · required

Lifecycle state of the quest chain itself. Only active, cooldown, pending_reward chains are returned by the active-chains endpoint;

Enum values:
active
completed
cancelled
archived
cooldown
pending_reward
expired
platform_id
​string · uuid · required

Identifier of the platform that owns the chain. Always the caller's own platform.

advertiser_id
​null | string · uuid · required

Identifier of the advertiser funding the chain rewards, or null for a platform-funded chain.

allow_any_order
​boolean · required

When true the tasks may be completed in any order; when false the chain is step-by-step and unreached tasks are reported with user_status: "locked".

use_levels
​boolean · required

When true the tasks are grouped into levels; when false all tasks belong to a single virtual level.

QuestChainLevel

A group of tasks within a quest chain, or the virtual common level when levels are disabled.
id
​null | string · uuid · required

Level identifier, or null for the virtual common level when the chain has no levels.

name
​null | string · required

Level display name, or null for the virtual common level when the chain has no levels.

show_content
​boolean · required

Whether the tasks of this level are visible to the user.

completed
​boolean · required

Whether all tasks in this level are completed or claimed by the user.

​object[] · required

Tasks belonging to this level, ordered by sequence_number.

QuestChainTask

A single task of a quest chain, already resolved for the requested user.
id
​string · uuid · required

Task unique identifier. Pass it to the reward-claim endpoint.

sequence_number
​integer · min: -9007199254740991 · max: 9007199254740991 · required

Position of the task inside the chain, starting at 1. Tasks arrive already ordered by this field.

name
​string · required

Task name, safe to show to the user as is.

description
​null | string · required

Long-form task description, or null when the task has none.

completion_instructions
​null | string · required

User-facing instructions explaining what the user must do for the task to be considered complete, or null when no additional instructions are configured.

condition_event_type
​string · required

Type of the event that completes this task, for example transaction, link_account or kyc. Send it back through the events endpoint when the user performs the action.

condition_min_amount
​null | number · required

Minimum event amount required to complete the task, or null when the task has no amount condition.

condition_currency
​null | string · required

Currency the condition_min_amount is denominated in, for example USD. Null when the task has no amount condition.

condition_after_timestamp
​null | string · required

Only events at or after this moment can complete the task, ISO 8601 with offset. Null when the task has no lower time bound.

condition_before_timestamp
​null | string · required

Only events at or before this moment can complete the task, ISO 8601 with offset. Null when the task has no upper time bound.

reward_type
​null | string · required

Reward kind, for example credit, item, multiplier or case. Null when the task carries no reward. For a task completed by a retroactive event this is the retro reward, which may differ from the regular one.

reward_name
​null | string · required

Human-readable reward name, or null when the task carries no reward.

reward_value
​null | number · required

Numeric reward value; meaningful for credit and multiplier rewards. Null when the reward has no numeric value.

reward_image_urls
​null | array · required

Absolute URLs of the reward images, or null when the reward has none.

​null | array · required

Every possible outcome this reward can draw, with its weight, or null when the task carries no reward. Has more than one entry only for a reward that draws randomly among several outcomes (a "case"/mystery box) — the reward_type/reward_name/reward_value/reward_image_urls fields above only describe one committed outcome and fall back to a generic case preview in that situation, so a client that wants to show the actual possible prizes and their odds should read this field instead.

user_status
​null | string · enum · required

State of the task for the requested user, or null when no per-user record exists yet. See QuestChainUserTaskStatus for the individual values.

Enum values:
pending
activated
completed
claimed
locked
level_id
​null | string · uuid · required

Identifier of the level this task belongs to, or null when the task is not assigned to any level.

RewardOutcome

One possible outcome of a reward that has not been drawn yet.
type
​null | string · required

Reward kind of this possible outcome, for example credit, item or multiplier.

name
​null | string · required

Human-readable name of this possible outcome.

value
​null | number · required

Numeric value of this possible outcome; meaningful for credit and multiplier rewards.

image_urls
​null | array · required

Absolute URLs of this outcome's images, or null when it has none.

weight
​number · required

Draw weight of this outcome relative to the other outcomes of the same reward, for showing odds.

QuestChainUserProgress

Progress of the requested user inside one quest chain.
status
​string · enum · required

State of this user's participation in the chain.

Enum values:
in_progress
completed
pending_reward
cooldown
progress
​number · required

Completion of the chain in percent, 0 to 100.

joined_at
​string · required

Moment the user joined the chain, ISO 8601 with offset.

completed_at
​null | string · required

Moment the user completed the chain, ISO 8601 with offset. Null while the chain is still in progress.

completed_tasks
​integer · min: -9007199254740991 · max: 9007199254740991 · required

Number of tasks the user has completed or already claimed.

total_tasks
​integer · min: -9007199254740991 · max: 9007199254740991 · required

Total number of tasks in the chain.

QuestChainReward

The big reward of a quest chain, resolved for the requested user.
id
​string · uuid · required

Identifier of the prize backing this chain's final reward -- never a specific outcome. See reward_outcomes for the possible outcomes when this prize can draw more than one.

type
​null | string · required

Reward code sent to the reward provider, or null when it is not set.

name
​null | string · required

Human-readable reward name, or null when the reward has none.

value
​null | number · required

Numeric reward value, or null when the reward has no numeric value.

image_urls
​null | array · required

Absolute URLs of the reward images, or null when the reward has none.

​null | array · required

Every possible outcome this reward can draw, with its weight, or null when the chain has no final reward. See QuestChainTask.reward_outcomes for the same "case"/mystery box semantics.

claimable
​boolean · required

Whether the requested user can claim this final chain reward now.

ConnectAccountInput

Payload of POST /v1/account/connect.
token
​string · minLength: 1 · maxLength: 4096 · required

Short-lived account connection token received through the Onward OAuth flow.

advertiser_user_id
​string · minLength: 1 · maxLength: 255 · required

Identifier of the user in the advertiser's own system.

​object

Advertiser-defined attributes to store with the account connection.

​object[] · maxItems: 100

Up to 100 historical events to evaluate after the advertiser account is linked.

RetroEvent

A historical event to apply immediately after connecting the account.
event_type
​string · minLength: 1 · maxLength: 100 · required

Advertiser-defined event type, for example deposit.completed.

timestamp
​string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

Moment the event occurred, formatted as an ISO 8601 UTC timestamp.

amount
​number · min: 0

Non-negative event amount when the event represents a measurable value.

currency
​string · maxLength: 10

Currency or unit associated with amount, when applicable.

reference
​string · maxLength: 255

Advertiser-side idempotency or audit reference for this event.

​object

Additional advertiser-defined event attributes.

ConnectAccountOutput

Result of a successfully completed account connection.
user_connected
​boolean · enum · required

Always true when the account connection completed successfully.

Enum values:
user_id
​string · uuid · required

Onward user identifier.

platform_user_id
​string · required

Identifier of the user in the platform's system.

advertiser_user_id
​string · required

Identifier of the user in the advertiser's system.

redirect_url
​string · uri · required

Validated URL to which the integration should redirect the user.

event_id
​string · uuid · required

Identifier of the account-link event created by Onward.

RegisterUserInput

Payload of POST /v1/account/register.
platform_user_id
​string · minLength: 1 · maxLength: 255 · required

Unique user identifier from your platform

Example: user_12345
​object

Links the user to the advertiser of the x-advertiser-api-key/secret headers. Platforms do not send it.

country_code
​null | string · minLength: 2 · maxLength: 2

ISO 3166-1 alpha-2 country code of the user.

Example: US
​object

Additional user attributes supplied by the platform.

Example: {"username":"player1","avatar_url":"https://platform.example/avatars/player1.png"}
advertiser_user_id
​string · minLength: 1 · maxLength: 255 · deprecated

Deprecated: use as_advertiser.advertiser_user_id. Rejected together with as_advertiser.

Example: mz_user_42

RegisterUserAsAdvertiser

Links the user to the advertiser of the x-advertiser-api-key/secret headers. Platforms do not send it.
advertiser_user_id
​string · minLength: 1 · maxLength: 255 · required

Advertiser-side user identifier.

Example: mz_user_42
​object[] · maxItems: 100

Up to 100 historical events to evaluate after the advertiser account is linked.

RegisterUserOutput

Result of registering or finding a platform user in Onward.
user_id
​string · uuid · required

Internal Onward identifier of the user.

Example: 6f2f6f4e-4a1e-4f6f-9a2b-2c9d1f0b7a31
platform_user_id
​string · required

Unique user identifier supplied by the platform.

Example: user_12345
created_at
​string · date-time · required

Moment the user was created, formatted as an ISO 8601 timestamp.

Example: 2026-08-20T12:30:00.000Z
already_exists
​boolean · required

Indicates whether the user already existed at the moment of the request.

Example: false
continuation_status
​string · enum

Durable user setup state: completed, pending, or failed.

Enum values:
completed
pending
failed
Example: completed

SendEventInput

A Platform or Advertiser event to record and match against the user's quest-chain tasks.
user_id
​string · minLength: 1 · maxLength: 255 · required

Identifier of the user in the caller's own system: a Platform user ID for Platform credentials or an Advertiser user ID for Advertiser credentials.

Example: platform-user-456
event_type
​string · minLength: 1 · maxLength: 100 · required

Caller-defined event type. Common examples include registration, kyc, link_account, and transaction.

Example: transaction
timestamp
​string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

Required ISO 8601 UTC timestamp indicating when the event occurred.

Example: 2025-10-21T18:45:00Z
amount
​number · min: 0

Optional non-negative value associated with the event, such as a deposit or purchase amount.

Example: 100
currency
​string · maxLength: 10

Optional currency or unit associated with amount, for example an ISO 4217 code.

Example: USD
reference
​string · maxLength: 255

Optional caller-defined business or audit reference associated with the event.

Example: tx_9h2j3k4l
​object

Additional caller-defined context used for task evaluation, audit, or analytics.

Example: {"transaction_type":"deposit","transaction_id":"tx_9h2j3k4l"}

SendEventOutput

Result of recording or deduplicating a Platform or Advertiser event.
event_id
​string · uuid · required

Internal identifier of the recorded event.

Example: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
user_id
​string · required

The caller-scoped user identifier supplied in the request.

Example: platform-user-456
event_type
​string · required

The caller-defined event type supplied in the request.

Example: transaction
received_at
​string · date-time · required

Moment Onward first recorded the event, formatted as an ISO 8601 timestamp.

Example: 2025-10-21T18:45:01Z
status
​string · enum · required

received for a newly recorded event or duplicate when the same user, event type, and event timestamp were already recorded.

Enum values:
received
duplicate
Example: received

StartAccountConnectInput

Payload of POST /v1/account/start-connect.
platform_user_id
​string · minLength: 1 · maxLength: 255 · required

User's ID on the platform.

Example: usr_abc123
quest_chain_id
​string · uuid · required

Quest chain ID which initiates the account connection.

Example: 550e8400-e29b-41d4-a716-446655440000
redirect_url
​string · uri · minLength: 1 · required

Where to send the user after the connection completes (success or error)

Example: https://yourplatform.com/oauth/callback

StartAccountConnectOutput

redirect_url
​string · uri · required

ClaimTaskRewardInput

Claims the reward attached to a completed task for a user belonging to the calling Platform. A task reward can be claimed only once.
platform_user_id
​string · minLength: 1 · maxLength: 255 · required

Identifier of the user in the calling Platform's own system.

Example: user_12345
task_id
​string · uuid · required

Identifier of the completed quest-chain task whose reward the user is claiming.

Example: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d

ClaimTaskRewardOutput

Identifiers, timestamp, and the drawn reward of the successfully recorded task reward claim.
user_task_id
​string · uuid · required

Identifier of the user's task-progress record that was claimed.

Example: 550e8400-e29b-41d4-a716-446655440000
task_id
​string · uuid · required

Identifier of the claimed task.

Example: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
user_id
​string · uuid · required

Internal Onward identifier of the user.

Example: 550e8400-e29b-41d4-a716-446655440001
claimed_at
​string · date-time · required

ISO 8601 timestamp when the reward claim was recorded.

Example: 2026-08-20T12:30:00Z
​object · required

The reward drawn from the task's mystery box at claim time, or null when the task has no reward configured.

ClaimedReward

Reward configuration resolved at the moment of claim.
id
​string · uuid · required

Identifier of the reward configuration that was drawn. Correlates this claim response with the reward.claimed webhook event carrying the same reward_id.

Example: 3f3d1c4e-9a5b-4c7d-8e2f-3a4b5c6d7e8f
type
​null | string · required

Reward kind, for example credit, item, multiplier, or case. Null when no type is configured.

Example: credit
​required

Configured reward value. It may be a JSON number or a decimal string; null when the reward has no numeric value.

Example: 100
name
​null | string · required

Human-readable reward name, or null when none is configured.

Example: Welcome bonus
provider_type
​null | string · required

Type of the provider responsible for fulfillment: platform or advertiser.

Example: platform
provider_id
​null | string · uuid · required

Internal identifier of the provider responsible for fulfillment.

Example: 0b6f5c2a-8a5e-4f0a-9f1b-1d2e3f4a5b6c
metadata
​required

Additional reward configuration passed to the fulfillment integration.

Example: {"currency":"USD"}
image_urls
​null | array · required

Absolute URLs of reward images, or null when the reward has none.

Example: ["https://cdn.example.com/rewards/welcome-bonus.png"]
redemption_instructions
​null | string · required

User-facing instructions explaining how to receive, redeem, or use the claimed reward.

Example: Show the voucher code at checkout before 31 December.

ClaimChainRewardInput

Claims the reward attached to the quest chain itself after the user's chain reaches `pending_reward`. This is separate from rewards attached to individual tasks.
platform_user_id
​string · minLength: 1 · maxLength: 255 · required

Identifier of the user in the calling Platform's own system.

Example: user_12345
quest_chain_id
​string · uuid · required

Identifier of the completed quest chain whose chain-level reward the user is claiming.

Example: 6f2f6f4e-4a1e-4f6f-9a2b-2c9d1f0b7a31

ClaimChainRewardOutput

Identifiers, timestamp, and the drawn reward of the accepted quest-chain reward claim.
quest_chain_id
​string · uuid · required

Identifier of the quest chain whose chain-level reward was claimed.

Example: 6f2f6f4e-4a1e-4f6f-9a2b-2c9d1f0b7a31
user_id
​string · uuid · required

Internal Onward identifier of the user.

Example: 550e8400-e29b-41d4-a716-446655440001
claimed_at
​string · date-time · required

ISO 8601 timestamp when the chain reward claim was accepted.

Example: 2026-08-20T12:35:00Z
​object · required

The reward drawn from the chain's mystery box at claim time. A chain reward claim never succeeds without one.

ClaimedRewardListItem

A reward claimed by the platform user from a task or a completed quest chain.
claim_id
​string · uuid · required

Identifier of the user task or user chain record that owns the claim.

source_type
​string · enum · required

Whether the reward was claimed for a task or for completing a quest chain.

Enum values:
task
chain
source_id
​string · uuid · required

Task identifier for task claims, or quest-chain identifier for chain claims.

quest_chain_id
​null | string · uuid · required

Quest-chain identifier associated with the claim, when available.

claimed_at
​string · date-time · required

ISO 8601 timestamp when the reward claim was recorded.

Example: 2026-08-20T12:30:00Z
​object · required

Reward configuration resolved at the moment of claim.

On this page
  • QuestChainsOutput
  • QuestChainItem
  • QuestChain
  • QuestChainLevel
  • QuestChainTask
  • RewardOutcome
  • QuestChainUserProgress
  • QuestChainReward
  • ConnectAccountInput
  • RetroEvent
  • ConnectAccountOutput
  • RegisterUserInput
  • RegisterUserAsAdvertiser
  • RegisterUserOutput
  • SendEventInput
  • SendEventOutput
  • StartAccountConnectInput
  • StartAccountConnectOutput
  • ClaimTaskRewardInput
  • ClaimTaskRewardOutput
  • ClaimedReward
  • ClaimChainRewardInput
  • ClaimChainRewardOutput
  • ClaimedRewardListItem