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
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 |
|---|---|---|---|
| string | Yes | REST path parameter or legacy query parameter. Use the same ASCII identifier as the offer click, at most 255 characters. The literal |
| integer | Yes | Positive numeric wall ID. The wall and publisher must be active. |
| integer | No | Supplied values are clamped to 1 through 10000. Omission applies no limit and returns |
| integer | No | Defaults to 0; negative values become 0. Applies even without |
| integer | No | Positive campaign ID. An active offer with no matching progress returns 200 with |
| integer | No | Legacy alias used only when |
| 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. |
| string | No | Session correlation value. Keep ASCII values within 200 characters before URL encoding. |
| string | No | IP used for country macro expansion; defaults to the caller’s IP. |
| string | No | Two-letter country override for macros. |
| integer | No | Click source used when generating click URLs. |
| string | No | Compatibility parameter. |
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 |
|---|---|---|
| string |
|
| integer | Publisher account ID. |
| integer | Wall selected by the request. |
| integer | User data identifier for support correlation. It is not a new identifier for each request. |
| integer | Matching offers before pagination. |
| integer | Applied offset. |
| integer or null | Effective maximum requested, or null when omitted. Not the returned count. |
| 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 |
|---|---|---|
| integer | Campaign ID. |
| string | Campaign name. |
| string | Short headline. |
| string | Offer description. |
| string | Additional terms. Display these alongside event requirements. |
| string | Category label: |
| integer | Internal content category, using the 0 through 11 mapping in the Swagger reference. |
| 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. |
| string or null | Configured repeat policy, described below. It does not by itself establish user eligibility. |
| 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. |
| 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. |
| 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. |
| string | User-specific URL. Serve it as returned. |
| string or null | Attributed click timestamp when available, expressed in UTC with microseconds and offset. |
| string or null | Mobile app identifier when available. |
| array | Objects containing |
| string | Campaign badge. |
| string or null | Campaign preview destination when available. |
| integer | 0 New, 1 Active, 2 In Review, 3 On Hold, 4 Discontinued. |
| array | Event requirements and progress. |
| number | Sum of event |
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 |
|---|---|---|
| number | Current promo-aware offer reward in the requested wall’s display units. Absent for merchant-sourced campaigns. |
| number or null | Pre-promo reward, present only during a promotion. |
| number or null | Combined reward across tiers, present only for tiered offers. |
| 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.
| Meaning |
|---|---|
| Repeats are restricted. This is not a guaranteed lifetime limit; tiered offers can credit each event. |
| Normally counts conversions on the current calendar date. |
| No frequency-count limit; other eligibility rules still apply. |
| Normally counts today and yesterday, not an exact rolling 48-hour interval. |
| Normally allows five conversions on the current calendar date. |
| 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:
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 |
|---|---|---|
| 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. |
| 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. |
| 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 |
|---|---|---|
| string | Configured RevU event identifier, returned as stored. Matches |
| string | Raw offer/tier identifier used for conversion matching. Matches |
| string | Requirements for this step. |
| number | Offered reward in wall display units; may be fractional. |
| 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. |
| integer or null | Event override deadline, in Unix seconds and anchored to the click. Null means use the offer-level deadline. |
| integer or false | One-based position for an ordered step, otherwise false. There is no separate |
| boolean | Whether the event must be completed in order. |
| 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. |
| string or null | Completion timestamp when available. |
| integer | Numeric state from the table below. |
| string | Corresponding state label. |
| boolean | Tracking-only event that awards no user currency. |
| string or null | Expected credit timestamp for a pending event, when known. |
Reward status reference
Code | Label | Meaning |
|---|---|---|
1 |
| No conversion record for this event yet. |
2 |
| Conversion credited. |
3 |
| Denied, reversed, expired or otherwise not credited. |
4 |
| Conversion recorded and awaiting credit, including a credit held by suspension. |
5 |
| Tracking-only conversion with no currency award. |
Errors
All errors use status: error with a structured error object. For example:
HTTP | Code | Meaning |
|---|---|---|
400 |
| User identifier was omitted or empty. |
400 |
| Wall was omitted or not positive. |
400 |
| Non-ASCII, more than 255 characters, or literal |
400 |
| Offer filter is not a positive integer. |
404 |
| Wall is missing or inactive, or publisher is inactive. The inactive publisher message is |
404 |
| No matching progress and the requested offer is missing or inactive. An active offer without progress returns 200 and an empty array. |
405 |
| Use GET. OPTIONS preflight returns 204 with no body. |
500 |
| 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
