A developer creates a Connected System and an Integration object that calls an external REST API. During testing, the call succeeds, but in the process model the Smart Service using that integration occasionally returns a success: false result even though the HTTP response code is 200. What is the most likely explanation?
Answer
In Appian, the HTTP response code and the integration success status are two separate things. An integration can return HTTP 200 (meaning the server responded without a transport error) but still be marked as success: false if the response handling rule determines the call did not produce a valid result.
This happens most commonly in two scenarios:
- The response mapping rule has an expression error. If the rule that parses the response body throws an error (e.g., tries to access a JSON key that doesn't always exist), Appian catches the error and marks the integration as failed — even though the HTTP call itself was successful.
- The integration's "Request Succeeded" condition is misconfigured. In HTTP integrations, there is an explicit field where the developer defines what constitutes success. If this expression references a field in the response body (e.g., response.body.status = "OK") and the API occasionally returns a different structure, the condition evaluates to false.
Best practice: Always use http!response.statusCode alongside response body validation in the success condition. Handle the success: false path explicitly in the process model using a gateway that checks ac!success — never assume a completed integration node means a successful API call.