> For the complete documentation index, see [llms.txt](https://arcplay-ai.gitbook.io/knowledge-portal/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://arcplay-ai.gitbook.io/knowledge-portal/for-consumer-apps/rewarded-h5-games/engineering-team/reward-url-integration/server-response.md).

# Server Response

ArcPlay.ai servers will expect either a `200` or `403` response from your server.

Your server should respond with `200` only if:

1. the user has successfully been awarded their currency.

Your server should respond with `403` if:

1. the `signature` parameter does not match the calculated value
2. the `userId`or`clientId` parameter is unknown to your system
3. if there was any other error that should not be retried.

NOTE:

1. ArcPlay.ai will continue to retry if ArcPlay.ai servers receive any response other than `200` or `403`.
2. It is important that the user is not rewarded if you are giving a non-`200` response, as ArcPlay.ai will continue to re-attempt the callback, possibly resulting in large numbers of duplicate rewards.
3. We’ll retry every 5 minutes for 4 days.
4. ⁠If the request is sent twice or more, then the response should be `200` for all times but the publisher should use `transactionId`as the unique identifier to detect if the request is duplicate and the user is not rewarded again.
5. We will flag the request as failed if your server takes more than 5 seconds to respond.
6. The response body of the callback URL responses needs to be in `UTF-8`. If they are not in `UTF-8` we will retry even if you return a `200`.
