Skip to main content
Take special care when making a service call. Your title should always handle errors when making network calls. Even for service calls that have been working consistently during development, service calls can fail in real-world environments for a number of different reasons. For example, your call may fail because:
  • The network is not available.
  • The service is too busy, returning a 503 HTTP status code.
  • The request is not valid, returning a 400 HTTP status code.
  • The user does not have the right permissions, returning a 403 HTTP status code.
  • The user has been banned, returning a 401 HTTP status code.
  • The HTTP stack is unable to send the request (ERROR_TIMEOUT, RPC_S_CALL_FAILED_DNE, etc.)
The XSAPI C API reports these failures as HRESULT values instead of throwing exceptions. Check the HRESULT that each function returns. For asynchronous calls, also check the completion result by calling XAsyncGetStatus or the operation’s result function in your completion callback. Pass a failed HRESULT to XblGetErrorCondition to classify the failure into a condition that your game can act on, such as Network, Auth, or Http429TooManyRequests.
Last modified on October 29, 2026