API Integration (Advanced)

Get Progress API - Technical Docs

Get Progress returns offer and event progress for a user, including pending credits, credited rewards, reversals and tracking-only events.

Quick start

curl --get 'https://publishers.revenueuniverse.com/api/v1/users/YOUR_USER_ID/getprogress' \
  --data-urlencode 'wall=YOUR_WALL_ID' \
  --data-urlencode 'limit=25'
curl --get 'https://publishers.revenueuniverse.com/api/v1/users/YOUR_USER_ID/getprogress' \
  --data-urlencode 'wall=YOUR_WALL_ID' \
  --data-urlencode 'limit=25'
curl --get 'https://publishers.revenueuniverse.com/api/v1/users/YOUR_USER_ID/getprogress' \
  --data-urlencode 'wall=YOUR_WALL_ID' \
  --data-urlencode 'limit=25'

Use GET over HTTPS. URL-encode the user identifier when placing it in the path. The legacy URL /getprogress_api.php?user_id=YOUR_USER_ID accepts the same query parameters and returns the same response.

User identification and scope

No API key is required or validated. Supply the required wall and user_id; key parameters and authentication headers do not identify the wall or authenticate this endpoint.

By default, progress is limited to the requested wall. If RevU has enabled publisher-wide wall unification for that wall, the same user’s progress can include other walls belonging to that publisher. Currency display uses the requested wall’s settings. Confirm the wall configuration when comparing progress across walls.

Request parameters

Parameter

Type

Required

Meaning

user_id

string

Yes

REST path parameter or legacy query parameter. Use the same ASCII identifier as the offer click, at most 255 characters. The literal {uid} is rejected.

wall

integer

Yes

Positive numeric wall ID. The wall and publisher must be active.

limit

integer

No

Supplied values are clamped to 1 through 10000. Omission applies no limit and returns limit: null.

offset

integer

No

Defaults to 0; negative values become 0. Applies even without limit.

offer_id

integer

No

Positive campaign ID. An active offer with no matching progress returns 200 with offers: []. When there is no matching progress and the offer is missing or inactive, returns 404 OFFER_NOT_FOUND.

offer_ID

integer

No

Legacy alias used only when offer_id is absent.

reward_status

integer

No

Filters parent-conversion state: 1 in progress, 2 credited, 3 reversed or expired, 4 pending credit. Values outside 1 through 4 are ignored.

sid3

string

No

Session correlation value. Keep ASCII values within 200 characters before URL encoding.

ip

string

No

IP used for country macro expansion; defaults to the caller’s IP.

country

string

No

Two-letter country override for macros.

click_src

integer

No

Click source used when generating click URLs.

include

string

No

Compatibility parameter. include=SID4 has no effect; each event already contains sid4.

The request’s reward_status filters the parent conversion, not individual event status. A response can include event status 5, but reward_status=5 does not select tracking-only events; that filter is ignored.

Response and pagination

Field

Type

Meaning

status

string

success.

publisher_id

integer

Publisher account ID.

wall_id

integer

Wall selected by the request.

support_id

integer

User data identifier for support correlation. It is not a new identifier for each request.

total

integer

Matching offers before pagination.

offset

integer

Applied offset.

limit

integer or null

Effective maximum requested, or null when omitted. Not the returned count.

offers

array

Matching offer progress. Can be empty.

For paging, send an explicit limit and increase offset until it reaches total. The Swagger reference contains complete response examples and the schema.

Offer fields

Field

Type

Meaning

offer_id

integer

Campaign ID.

offer_name

string

Campaign name.

headline

string

Short headline.

description

string

Offer description.

offer_terms

string

Additional terms. Display these alongside event requirements.

offer_type

string

Category label: Undefined, Free, Purchase, Trial, Other, Mobile Apps, Clicks and Videos, Studies or Contest.

offer_category

integer

Internal content category, using the 0 through 11 mapping in the Swagger reference.

reporting

string

Expected crediting delay: Instant, Daily, 2-3 Days, 3-5 Days, 5-7 Days, Weekly, Bi-Weekly, Monthly, Hourly or Undisclosed. May be empty.

multiple_leads

string or null

Configured repeat policy, described below. It does not by itself establish user eligibility.

repeat_available

boolean or null

Whether the user’s repeat-count and account-age checks permit another completion. Null for non-repeatable offers or an unrecognized setting. Other eligibility rules still apply.

reward_expiration_date

integer or null

Campaign reward deadline in Unix seconds, anchored to the click’s stored reward-window start or click timestamp. Null when no applicable reward window is configured.

support_expiration_date

integer or null

Support/report-filing deadline in Unix seconds, using the click snapshot and applicable support window. Null when the click anchor is unavailable.

click_url

string

User-specific URL. Serve it as returned.

attributed_click_time

string or null

Attributed click timestamp when available, expressed in UTC with microseconds and offset.

mobile_package_id

string or null

Mobile app identifier when available.

creatives

array

Objects containing url, integer width and integer height.

tag

string

Campaign badge.

preview_url

string or null

Campaign preview destination when available.

campaign_status

integer

0 New, 1 Active, 2 In Review, 3 On Hold, 4 Discontinued.

events

array

Event requirements and progress.

total_user_reward

number

Sum of event user_reward in wall display units. May be fractional.

The reward deadline concerns completion and credit eligibility. The support deadline concerns filing a report; it is not the reward deadline. A campaign without a reward window can still have a support deadline. An event-level null reward deadline inherits the offer-level deadline. Get Progress returns click-backed dates; it does not return reward_window_days or support_window_days.

These additional currency fields are conditional:

Field

Type when present

Presence and meaning

currency

number

Current promo-aware offer reward in the requested wall’s display units. Absent for merchant-sourced campaigns.

currency_was

number or null

Pre-promo reward, present only during a promotion.

currency_with_tiers

number or null

Combined reward across tiers, present only for tiered offers.

currency_was_with_tiers

number or null

Pre-promo combined reward, present only for tiered offers during a promotion.

Get Progress does not return payout or total_payout.

Repeat policies

multiple_leads is the configured repeat policy as a text value or null. It is separate from the user-specific repeat_available result.

multiple_leads

Meaning

not_permitted

Repeats are restricted. This is not a guaranteed lifetime limit; tiered offers can credit each event.

once_per_day

Normally counts conversions on the current calendar date.

unlimited

No frequency-count limit; other eligibility rules still apply.

once_per_two_days

Normally counts today and yesterday, not an exact rolling 48-hour interval.

five_per_day

Normally allows five conversions on the current calendar date.

once_per_seven_days

Normally counts today and the previous six dates; no fixed weekday reset.

multiple_leads is null for a missing or unrecognized setting. Date boundaries use the service's configured time zone; daylight-saving behavior can affect availability. Use repeat_available for the user's repeat-count and account-age result, and Get Personalized for current offer eligibility.

Check a user's repeat availability

Use the same wall and user ID used for the click, and filter to the offer:

curl --get 'https://publishers.revenueuniverse.com/api/v1/users/YOUR_USER_ID/getprogress' \
  --data-urlencode 'wall=YOUR_WALL_ID' \
  --data-urlencode 'offer_id=YOUR_OFFER_ID' \
  --data-urlencode 'limit=100'
curl --get 'https://publishers.revenueuniverse.com/api/v1/users/YOUR_USER_ID/getprogress' \
  --data-urlencode 'wall=YOUR_WALL_ID' \
  --data-urlencode 'offer_id=YOUR_OFFER_ID' \
  --data-urlencode 'limit=100'
curl --get 'https://publishers.revenueuniverse.com/api/v1/users/YOUR_USER_ID/getprogress' \
  --data-urlencode 'wall=YOUR_WALL_ID' \
  --data-urlencode 'offer_id=YOUR_OFFER_ID' \
  --data-urlencode 'limit=100'

URL-encode the actual user ID in the path. No API key is required. If a limit is supplied, follow offset and total to read all matching progress records; there may be more than one record for the same offer.

Read offers[].repeat_available, a response field rather than a query parameter:

Value

Meaning

Publisher action

true

The user's repeat-count and applicable account-age checks permit another completion.

Treat this as the repeat-check result. Other eligibility and offer requirements still apply.

false

Those checks currently block another completion.

Do not infer an exact reset time or a specific blocking reason; neither is returned. Recheck when refreshing the user's offers.

null

The policy is non-repeatable or unrecognized.

Do not interpret null as permission to repeat.

An empty offers array means no matching progress was returned, not that the user is eligible. Use Get Personalized for current user-specific selection. Its list can omit an offer because of limits, targeting or other rules, so absence does not explain a particular repeat restriction.

Read recorded completion history

Read events[].user_completed_at together with event_reward_status. Status 2 is credited, 4 is pending credit, 3 is reversed or expired, 1 is in progress and 5 is non-crediting. A timestamp can exist for a pending or reversed event; it does not prove that a reward was credited.

Get Progress provides progress records, not a complete ledger of every repeated conversion. It does not expose a last-24-hours query filter, remaining-repeat count or exact next-repeat timestamp. Do not reproduce the internal repeat count by counting credited event rows or timestamps. Repeat checks use recorded conversion activity and may include records that are not currently credited. Use repeat_available for that result and retain your postback history for your own reward audit trail.

For once_per_day, a completion on the current service calendar date normally blocks another that day. A later calendar date may permit a repeat, subject to other rules. This is not a rolling 24-hour check, and the UTC event timestamp alone should not determine eligibility.

What account age means

Account age is an internal RevU check based on when that user's wall record was first seen. There is no account_age request parameter or response field. If a wall has a minimum account-age requirement for additional same-day completions, it can make repeat_available false for unlimited and five_per_day after a conversion that day. This account-age check does not apply to once_per_day. The configured minimum and the blocking reason are not exposed in this response.

Event fields

Field

Type

Meaning

event_id

string

Configured RevU event identifier, returned as stored. Matches $event_id$. May be empty; no base prefix or fallback ID is generated.

sid4

string

Raw offer/tier identifier used for conversion matching. Matches $sid4$ and is independent from event_id. An empty identifier can be valid.

event_description

string

Requirements for this step.

user_reward

number

Offered reward in wall display units; may be fractional.

conversion_type

integer

Crediting-timing code: 0 unset, 1 Instant, 2 Daily, 3 2-3 Days, 4 3-5 Days, 5 5-7 Days, 6 Weekly, 7 Bi-Weekly, 8 Monthly, 9 Instant pixel/loop, 10 Hourly, 11 Undisclosed.

reward_expiration_date

integer or null

Event override deadline, in Unix seconds and anchored to the click. Null means use the offer-level deadline.

event_order

integer or false

One-based position for an ordered step, otherwise false. There is no separate non_linear field.

is_sequential

boolean

Whether the event must be completed in order.

points_awarded

number

Amount on the conversion record, or 0 without one. May be fractional. Interpret with event status; it is not the user’s account balance.

user_completed_at

string or null

Completion timestamp when available.

event_reward_status

integer

Numeric state from the table below.

event_reward_status_label

string

Corresponding state label. unknown is a defensive fallback; it does not define another numeric state or filter value.

is_non_crediting

boolean

Tracking-only event that awards no user currency.

pending_time

string or null

Expected credit timestamp for a pending event, when known.

Reward status reference

Code

Label

Meaning

1

in_progress

No conversion record for this event yet.

2

credited

Conversion credited.

3

reversed_or_expired

Denied, reversed, expired or otherwise not credited.

4

pending_credit

Conversion recorded and awaiting credit, including a credit held by suspension.

5

non_crediting

Tracking-only conversion with no currency award.

Errors

All errors use status: error with a structured error object. For example:

{"status":"error","error":{"code":"MISSING_WALL","message":"wall parameter is required"}}
{"status":"error","error":{"code":"MISSING_WALL","message":"wall parameter is required"}}
{"status":"error","error":{"code":"MISSING_WALL","message":"wall parameter is required"}}

HTTP

Code

Meaning

400

MISSING_USER_ID

User identifier was omitted or empty.

400

MISSING_WALL

Wall was omitted or not positive.

400

INVALID_USER_ID

Non-ASCII, more than 255 characters, or literal {uid}.

400

INVALID_OFFER_ID

Offer filter is not a positive integer.

404

INVALID_WALL

Wall is missing or inactive, or publisher is inactive. The inactive publisher message is Invalid wall or affiliate.

404

OFFER_NOT_FOUND

No matching progress and the requested offer is missing or inactive. An active offer without progress returns 200 and an empty array.

405

METHOD_NOT_ALLOWED

Use GET. OPTIONS preflight returns 204 with no body.

500

DB_ERROR / UID_DATA_ERROR

Database or user-data resolution failed. Retry and contact support if persistent.

There is no API-key rejection response: this endpoint does not validate keys. Preserve nullable fields and fractional amounts when rendering progress, and send the returned support_id when reporting a user-specific issue.

Share feedback on this documentation

On this page

On this page