Separate transport from meaning
An authentication error, timeout, or rate limit is not proof of an invalid address. Record the operational condition separately from any verified result.
Follow the contract
Use the documented response schema and error codes. Avoid matching arbitrary English message text when a stable machine-readable code exists.
Retry with a policy
Respect documented retry timing and use idempotency where supported. Avoid indefinite retries or submitting the same expensive job whenever a client refreshes.
Keep sensitive data out of logs
Prefer request identifiers and limited operational metadata. Do not record API keys or complete uploaded datasets in generic application logs.
Test the unhappy paths
Include malformed input, unavailable providers, unknown outcomes, rate limits, and interrupted responses in your integration checks. Next: Read the actual API reference before implementing these patterns.
Make failures observable
Record an operation reference, timestamp, sanitized error category, and attempt count. Keep the address list and credentials out of routine logs. This gives an operator a useful starting point without creating unnecessary data copies.
Test recovery deliberately
Test timeouts after submission, duplicate callbacks, invalid credentials, exhausted credits, and unexpected categories. Verify that each case preserves the original work and avoids an invented success state.
Review one representative record with your team. Agree on the evidence, the decision, and who owns the next step before applying the same rule to a complete list.