|Error code||Error Message||Description||Examples|
This API has been blocked temporarily. Please try again later or contact the system administrators.
|Invoke an API which is in the BLOCKED lifecycle state|
|Message throttled out|
The maximum number of requests that can be made to the API within a designated time period is reached and the API is throttled for the user.
|Invoke an API exceeding the tier limit|
|Hard limit exceeded||Hard throttle limit reached||Invoke an API exceeding the hard throttle limit|
|Resource level throttle out||Message is throttled out because resource level has exceeded||Sending/Receiving messages beyond authorized resource level|
|Application level throttle out||Message is throttled out because application level is exceeded||Sending/Receiving messages beyond authorized application level|
Unclassified authentication failure
|An unspecified error has occurred||Backend service for key validation is not accessible when trying to invoke an API|
|Invalid authentication information provided||Using an older access token after an access token has been renewed.|
|No authentication information provided||Accessing an API without the Authorization: Bearer header|
Incorrect access token type is provided
The access token type used is not supported when invoking the API. The supported access token types are application and user accesses tokens. See Access Tokens.
|Invoke API with application token, where the resource only allows application user tokens|
No matching resource found in the API for the given request
|A resource with the name in the request can not be found in the API.||Invoke an API resource that is not available|
The requested API is temporarily blocked
|Happens when the API user is blocked.||Invoke API resource with a subscription that has been blocked by the API publisher|
|The user invoking the API has not been granted access to the required resource.||Invoke an unsubscribed API|
The subscription to the API is inactive
|The status of the API has changed to an inaccessible/unavailable state.||Invoke an API resource with a subscription that has not yet been approved by the administrator.|
The access token does not allow you to access the requested resource
Can not access the required resource with the provided access token. Check the valid resources that can be accessed with this token.
|Invoke API resource with an access token that is not generated to be used with the resource's scope.|
|Incomplete payload||The payload sent with the request is too large and the client is unable to keep the connection alive until the payload is completely transferred to the API Gateway||Sending a large PDF file with the POST request|
The HTTP Status Codes and the corresponding error codes from the error responses are given below.
Transport error codes
|101000||Receiver input/output error sending|
|101001||Receiver input/output error receiving|
|101500||Sender input/output error sending|
|101501||Sender input/output error receiving|
|101504||Connection timed out (no input was detected on this connection over the maximum period of inactivity)|
|101506||NHTTP protocol violation|
|101508||Request to establish new connection timed out|
|101510||Response processing failed|
If the HTTP PassThrough transport is used, and a connection-level error occurs, the error code is calculated using the following equation:
There is a machine state in the transport sender side, where the protocol state changes according to the phase of the message.
Following are the possible protocol states and the description for each:
|REQUEST_READY (0)||Connection is at the initial stage ready to send a request|
|REQUEST_HEAD(1)||Sending the request headers through the connection|
|REQUEST_BODY(2)||Sending the request body|
|REQUEST_DONE(3)||Request is completely sent|
|RESPONSE_HEAD(4)||The connection is reading the response headers|
|RESPONSE_BODY(5)||The connection is reading the response body|
|RESPONSE_DONE(6)||The response is completed|
|CLOSING(7)||The connection is closing|
|CLOSED(8)||The connection is closed|
Since there are several possible protocol states in which a request can time out, you can calculate the error code accordingly using the values in the table above. For example, in a scenario where you send a request and the request is completely sent to the backend, but a timeout happens before the response headers are received, the error code is calculated as follows:
In this scenario, the base error code is
CONNECTION_TIMEOUT(101504) and the protocol state is
Error code = 101504 + 3 = 101507
These Transport error codes are used in Advanced Configurations of Endpoints.
Custom error messages
To send a custom message with a custom HTTP status code, you execute an additional sequence that can generate a new error message. You then override the message body, HTTP status code and other values.
WSO2 API Manager has the following default fault sequences located in
This is the primary fault sequence that gets invoked when an error occurs during the execution of an API resources
|This sequence is called when the endpoint being called does not exist|
|This sequence is called when an API authentication error is encountered|
|This sequence is called when a Production key is used to invoke an API that does not have a Production endpoint defined|
|This sequence is called when a Sandbox key is used to invoke an API that does not have a Sandbox endpoint defined|
|This sequence is called when a given request to an API gets throttled out|
|This sequence is called when there is an error in invoking the token API|
|This sequence is called when a matching resource cannot be found by the gateway to the corresponding resource being invoked|
The default sequences can also be customized as shown in the section above.