Product
Publishers
Advertisers
Networks
Help
Pause animations
Browse help topics
Troubleshooting Publisher

“This offerwall link is invalid or expired”

Updated

View as Markdown

We refused to open the wall for that link, and your user sees this message instead of offers. On a wall that uses signed links it’s almost always a link that was already used or is more than 5 minutes old: sign a fresh one for every launch.

See also: Hosted Offerwall

On this page

On a wall that uses simple links, check the wall ID, the uid and the source in the URL. If every link fails, even a fresh copy of your snippet, we may not have switched your wall on yet.

What you see and what to do

What you seeWhat it meansWhat to do
The message after a reload, or on a link opened a second timeA signed link works onceSign a new URL every time the wall opens
The message on every signed linkThe signature or the time doesn’t matchCheck the field order, the secret and that ts is in seconds
The message on every link, signed or notThe wall ID, the account or a wall we haven’t switched on yetCompare the wall ID with your snippet, then email us
A blank frame, or the browser’s refused-to-connect box, in an iframeWe tell browsers not to frame a wall we can’t open, or your site isn’t on the wall’s allowed originsSee The wall ID is wrong and the last check, and embedding
The wall opened, but after a long while taps say “The offer didn’t open. Try again.”A wall visit lasts an hourOpen the wall again; on signed links, with a new URL

Checks, most likely first

  1. Each signed link carries a nonce that works once. A reload, a link cached by your app or a link shared with someone else reuses it.

    How to confirm: the first open worked and the second didn’t.

    Fix: have your server sign a new URL each time the wall opens, and don’t cache it in the app or the page.

  2. ts must be within 5 minutes of our time, earlier or later.

    How to confirm: compare ts in the failing URL with the current Unix time in seconds. A 13-digit ts is in milliseconds.

    Fix: send whole seconds, sign at the moment the wall opens and keep your server’s clock synced.

  3. The signature doesn’t match

    How to confirm: a fresh link fails on its first open, with the right time.

    Fix: sign the wall ID, uid, ts and nonce, in that order, joined by newlines, with HMAC-SHA256 and the wall’s ows_ secret, as hex. If the URL has a property_id, sign it as a fifth line; if it doesn’t, don’t. Sign the uid exactly as it arrives after URL decoding. Simple and signed links has working code.

  4. How to confirm: your Docs or property page says the wall requires server-signed launch URLs, and the failing link has no sig.

    Fix: sign every launch on your server. To let simple links open the wall instead, email us with your wall ID.

  5. On a wall that takes simple links, a link with any of ts, nonce or sig in it is checked as a signed launch, and half a signature fails.

    How to confirm: the link has one of those three parameters.

    Fix: remove all three, or sign properly.

  6. The wall ID is wrong

    How to confirm: the part after /w/ doesn’t match the wall ID in your Docs snippet or on your property, character for character.

    Fix: copy the snippet again rather than retyping the ID.

  7. The uid is missing or empty

    The wall shows this message without asking us when the link has no uid.

    How to confirm: the link has no uid=, or uid= with nothing after it.

    Fix: fill in your user’s ID on every launch. A literal YOUR_USER_ID opens the wall, but every user then shares one ID.

  8. source has a value we don’t accept

    source must be hosted, iframe, ios or android, and appear once.

    How to confirm: the link has another value (web, app), or two source parameters, which can happen when a wrapper adds its own.

    Fix: keep one source with one of the four values, or leave it out.

  9. The property_id can’t be used with this wall

    How to confirm: the link has a property_id, and the check under Find the exact reason names the property.

    Fix: in Properties & Apps, check that the property exists on this account, is active, has Hosted Offerwall turned on under Integrations, and is linked to this wall. Copying the property’s own snippet gets the right ID.

  10. The wall isn’t switched on, or the account isn’t active

    We switch each wall on for real users when we set up your account. A wall we haven’t switched on yet, a wall that was deactivated or an account that isn’t active refuses every launch, signed or not.

    How to confirm: every link fails, including a fresh copy of your snippet, and the check under Find the exact reason answers Offerwall runtime is unavailable, Offerwall app is disabled or Offerwall access required.

    Fix: email us with your wall ID.

Find the exact reason

The wall shows one message for every refusal. Our launch endpoint names the reason. Send it the values from the failing link:

Shell
curl -s -X POST https://affiliateos.xyz/offerwall/sessions \
  -H "content-type: application/json" \
  -d '{"appId":"owapp_your_wall","uid":"u_48213","source":"iframe","country":"US"}'

Add "ts" (as a number), "nonce", "sig" and "property_id" when the link has them. A refusal answers with a message such as Offerwall launch nonce already used, Offerwall launch link expired or Offerwall app not found. A success opens a wall visit, as a launch would; on a signed link it uses up the nonce, so test with a fresh one.

Send us this

Email hello@affiliateos.ai with:

  • the email you sign in with,
  • your wall ID (owapp_...),
  • the failing launch URL (a used or expired signed URL can’t open the wall again, so it’s safe to send),
  • the time it failed, with your time zone,
  • where the wall was shown: a link, an iframe, a browser tab or a WebView, and on which device,
  • the message from the check above, if you ran it.

Support

Still stuck? Write to us.

One address for every question: hello@affiliateos.ai. Put the details from this list in your first message so we can find the click or conversion without asking you for them again.

Put these in your message

  1. 01The email you sign in with
  2. 02Your role: publisher, advertiser or network
  3. 03The offer ID
  4. 04The click ID or action_id
  5. 05The time it happened, with your time zone
  6. 06What you expected to happen

Looking for a reward in an app? Ask that app's support. It credits your reward, so only it can see your balance.

Search help