An API integration is easy to demo.
Call an endpoint.
Receive JSON.
Write it to a database.
Production is harder.
The vendor rate-limits requests.
Access tokens expire.
Webhooks arrive twice.
Pages are missed.
A request succeeds but the response times out.
The API changes.
A production-ready integration is designed around these failure modes from the beginning.
Start With the Vendor Contract
Before development, document:
- Authentication method.
- Token lifetime.
- Scopes.
- Rate limits.
- Pagination.
- Webhook support.
- Retry guidance.
- Idempotency support.
- API versioning.
- Bulk endpoints.
- Historical access.
- Delete behavior.
- Sandbox availability.
- Support channel.
The API documentation is part of the architecture.
Actiknow’s custom solutions work includes SaaS integrations, automation and business applications. Reliable integrations require both application logic and operational controls.
Treat Rate Limits as a Capacity Constraint
Rate limits determine how quickly an integration can process work.
Examples include:
- Requests per second.
- Requests per minute.
- Daily quota.
- Concurrent requests.
- Per-user quota.
- Per-tenant quota.
- Endpoint-specific quota.
Model the expected volume.
If 10 million records require one API request each and the vendor allows 100 requests per minute, the architecture does not work.
Calculate before building.

Use Bulk Endpoints Where Available
Many APIs provide:
- Bulk export.
- Batch create.
- Batch update.
- Asynchronous jobs.
Use them when they reduce request volume and are operationally reliable.
But bulk APIs need their own controls:
- Job status polling.
- Partial failures.
- Result files.
- Error records.
- Replay.
Do not assume bulk means simple.
Throttle Proactively
Do not send requests at maximum speed until the vendor returns 429 errors.
Use a client-side rate limiter.
Keep normal traffic below the documented ceiling.
Reserve capacity for:
- Retries.
- Interactive requests.
- Other internal consumers.
Vendor limits can be shared across applications.
Coordinate ownership.
Respect Retry-After
When an API returns rate-limit or temporary-unavailability guidance, follow it.
If Retry-After is provided, use it.
Do not retry every 100 milliseconds.
Aggressive retries make outages worse and can extend throttling.
Use Exponential Backoff
For transient failures, increase the delay between attempts.
Conceptually:
- Attempt 1 → short wait.
- Attempt 2 → longer wait.
- Attempt 3 → longer wait.
Add jitter so multiple workers do not retry simultaneously.
This reduces retry storms.
Classify Errors Before Retrying
Not every error is transient.
Retry:
- Timeout.
- Temporary network failure.
- 429 rate limit.
- Selected 5xx server errors.
Do not blindly retry:
- Invalid request.
- Permission denied.
- Missing required field.
- Permanent business rejection.
- Unsupported endpoint.
Authentication may need token refresh rather than ordinary retry.
Build an explicit error taxonomy.
Set Maximum Retry Attempts
Infinite retry loops waste capacity and hide failures.
After a defined threshold:
- Move the item to a dead-letter or exception queue.
- Preserve request context.
- Alert the owner.
- Allow controlled replay.
The exact limit depends on business urgency and vendor behavior.

Make Retries Idempotent
A retry should not create duplicate business actions.
Suppose POST /payments succeeds but the network drops before the response arrives.
The client does not know whether payment was created.
If the vendor supports idempotency keys, send a stable key for the logical operation.
If not, use a lookup or reconciliation strategy before repeating uncertain writes.
GET Is Usually Easier Than POST
Read operations are generally safer to retry.
Write operations need more care.
For each endpoint, classify:
- Safe read.
- Idempotent write.
- Non-idempotent side effect.
Then design retry behavior accordingly.
Handle Token Expiry
OAuth-based APIs require token lifecycle management.
Plan:
- Access token storage.
- Refresh token storage.
- Encryption.
- Refresh timing.
- Refresh failure.
- Revocation.
- Reauthorization.
- Tenant mapping.
Do not wait for every request to fail before refreshing.
But avoid unnecessary refresh calls.
Protect Secrets
Store API credentials and tokens in a secure secret store.
Do not:
- Commit them to source code.
- Log full tokens.
- Put them in spreadsheets.
- Send them in support messages.
Define rotation and offboarding.
Use least-privilege scopes.
Pagination Must Be Tested
APIs may paginate using:
- Offset.
- Page number.
- Cursor.
- Continuation token.
- Next link.
Test:
- First page.
- Middle pages.
- Last page.
- Empty page.
- Changing data during pagination.
- Retry of one page.
- Large dataset.
Do not assume page=1,2,3 is stable while source records are being inserted.
Prefer Stable Cursor Pagination
Where the API provides a cursor designed for incremental iteration, use it according to vendor guidance.
Persist the cursor only after durable processing.
If the job fails, restart safely from the last committed position.
Use overlap or deduplication where required.
Understand Incremental Filters
Common patterns include:
- updated_since.
- modified_after.
- start_time/end_time.
- Sequence.
- Cursor.
- CDC token.
Clarify whether boundaries are inclusive.
Clarify timezone and timestamp precision.
Test multiple records with identical timestamps.
A one-character comparison mistake can lose records.

Webhooks Reduce Polling but Add Delivery Complexity
Webhooks are useful when low latency matters.
The provider sends events when something changes.
But delivery is usually at-least-once rather than exactly-once in practical designs.
Expect duplicates.
Expect retries.
Expect out-of-order events.
Expect occasional delivery gaps.
Design accordingly.
Authenticate Webhooks
Verify the sender.
Methods can include:
- Signature/HMAC.
- Shared secret.
- mTLS.
- Provider verification token.
- IP restrictions as a secondary control.
Follow vendor guidance.
Do not trust an internet endpoint merely because the JSON shape looks correct.

Acknowledge Quickly
Webhook endpoints should usually validate and persist the event quickly, then return success.
Do heavy processing asynchronously.
If processing takes 30 seconds before acknowledgement, the provider may assume delivery failed and retry.
A good pattern is:
- Receive.
- Authenticate.
- Persist.
- Acknowledge.
- Process asynchronously.
Deduplicate Webhooks
Store the provider’s event ID where available.
If the same event arrives again:
- Recognize it.
- Do not repeat the business side effect.
- Return an appropriate success response if already processed.
Keep event IDs for the vendor’s realistic retry window.
Handle Out-of-Order Events
Event B can arrive before event A.
Use:
- Object version.
- Sequence.
- Source updated timestamp.
- Fetch-current-state pattern.
For some integrations, the safest webhook behavior is:
Webhook says “customer changed.”
Consumer calls API for current customer state.
This reduces dependence on event order, though it increases API calls.
Build Webhook Replay
Some providers offer event replay endpoints or delivery logs.
Use them.
If not, maintain your own raw event log and periodic reconciliation.
A webhook system without replay is difficult to recover after downtime.
Do Not Trust Webhooks as the Only Completeness Mechanism
Even reliable webhook systems should have reconciliation.
For example:
- Webhook processes changes quickly.
- Nightly job queries records updated in the last 48 hours.
- Upsert/deduplicate.
This catches missed events.
The overlap is safe when processing is idempotent.
Monitor End-to-End Lag
Track:
- Source event time.
- Webhook received time.
- Processing completed time.
- Destination updated time.
This reveals where latency occurs.
A webhook received instantly but queued for 45 minutes is not real-time integration.
Store Raw Requests Where Appropriate
Raw API or webhook payloads can help with:
- Debugging.
- Replay.
- Vendor disputes.
- Schema-change analysis.
- Audit.
Apply security and retention controls.
Do not store sensitive payloads indefinitely without purpose.
Monitor Schema Changes
APIs evolve.
Track:
- New fields.
- Missing fields.
- Type changes.
- Enum additions.
- Deprecated endpoints.
- Version headers.
- Vendor announcements.
Explicit mapping protects downstream applications from uncontrolled propagation.
Version Your Integration
Record:
- API version.
- Mapping version.
- Code version.
- Configuration.
This helps diagnose when behavior changed.
For major vendor upgrades, run old and new versions in parallel where possible.
Build a Processing Ledger
For critical integrations, record:
- Source ID.
- Event/request ID.
- Tenant.
- Operation.
- Attempt count.
- First attempt.
- Last attempt.
- Status.
- Target ID.
- Error.
This makes support dramatically easier.
A user can ask, “Why is order 1842 missing?” and operations can trace it.
Use Correlation IDs
Attach a correlation ID across:
- Inbound request.
- Queue message.
- API call.
- Database write.
- Log.
- Alert.
This connects distributed steps during troubleshooting.
Monitor More Than Error Rate
Track:
- Request volume.
- Success rate.
- Latency.
- 429 rate.
- 5xx rate.
- Token refresh failures.
- Webhook duplicates.
- Webhook lag.
- Queue depth.
- Dead-letter count.
- Records processed.
- Reconciliation differences.
A 99.9% request success rate can still hide one critical missing invoice.
Create Vendor-Specific Runbooks
Document:
- Status page.
- Support contact.
- Rate limits.
- Token reset.
- Replay procedure.
- Known errors.
- Sandbox differences.
- Escalation.
- Outage behavior.
When the vendor is down, operators should not need to rediscover the API.

Design Degraded Behavior
Ask what the application should do during an API outage.
Options:
- Queue writes.
- Show stale data with timestamp.
- Disable affected feature.
- Allow manual fallback.
- Retry later.
- Fail transaction.
The correct choice is a business decision.
Test Vendor Failure
In staging, simulate:
- 429.
- 401.
- 403.
- 500.
- Timeout.
- Malformed JSON.
- Duplicate webhook.
- Out-of-order webhook.
- Expired token.
- Pagination interruption.
- Partial batch failure.
The integration is not production-ready until these cases have known outcomes.
A Production Checklist
Before launch, confirm:
- Rate limits are modeled.
- Client throttling exists.
- Retryable errors are classified.
- Exponential backoff is implemented.
- Maximum retries are defined.
- Write retries are idempotent.
- OAuth/token lifecycle is automated.
- Pagination is tested.
- Incremental boundaries are tested.
- Webhooks are authenticated.
- Webhook duplicates are handled.
- Out-of-order events are handled.
- Replay exists.
- Periodic reconciliation exists.
- Schema changes are monitored.
- Logs use correlation IDs.
- Operational dashboards exist.
- Vendor outage runbook exists.
Frequently Asked Questions
What is the most important API integration best practice?
Design for failure and replay. Assume requests can time out, events can duplicate and dependencies can become unavailable.
How should API rate limits be handled?
Model required throughput, throttle proactively, respect Retry-After and use exponential backoff for temporary throttling.
Should every API error be retried?
No. Retry transient failures. Data errors, permission failures and permanent business rejections usually require correction or escalation.
How do you prevent duplicate webhook processing?
Use stable event IDs, store processed events and make downstream operations idempotent.
Are webhooks better than polling?
They are often better for low-latency change notification, but polling or reconciliation is still useful to recover missed events.
How should OAuth token expiry be handled?
Securely store tokens, refresh before or when required, handle refresh failures and provide a reauthorization path.
What should an API integration monitor?
Volume, success, latency, rate limits, authentication, queue depth, webhook lag, duplicates, dead letters and source-to-target reconciliation.
Conclusion
Reliable API integration is mostly about what happens when the happy path stops being happy.
Respect rate limits.
Retry selectively.
Make writes idempotent.
Manage token lifecycle.
Treat webhooks as duplicate-prone events.
Build replay and reconciliation.
Monitor the business outcome, not just HTTP status codes.
If you are building a business-critical SaaS integration, Actiknow can help design the authentication, retry, webhook, monitoring and recovery architecture needed for production. Discuss your API integration requirements with Actiknow.

