Skip to main contentSkip to navigationSkip to footer
New: We launched Praxismith - practical courses on working with AI and production AI agents.Explore Praxismith
Eunix Tech - Software Engineering Company
API Integration Services: How to Build Reliable Connections Between Business Applications

API Integration Services: How to Build Reliable Connections Between Business Applications

Rajesh Dhiman45 min readAI Strategy

Connecting two systems is easy. Keeping them connected through retries, rate limits, duplicate payments and API changes is the real work. Here is how reliable API integration services are built.

Almost every integration works on the day it ships. The test order flows from the shop to the ERP, the new lead lands in the CRM, and everyone moves on. The trouble starts three weeks later, when a payment provider times out halfway through a charge, a vendor quietly renames a field, or a nightly sync hits a rate limit and stops without telling anyone.

That gap between "it connected" and "it keeps working" is what good API integration services are really about. Anyone can call an endpoint. The engineering is in authentication that does not expire silently, data mapping that survives edge cases, retries that do not double-charge a customer, and monitoring that tells you about a failure before your customer does.

This guide walks through how business applications get connected through APIs, the integration styles you will choose between, and the reliability patterns that separate a demo from a production system. It is the most technical post we have written on the subject, so there is some code, but you do not need to be a developer to follow the reasoning.

What Are API Integration Services?

API integration services design, build, secure and maintain the connections that let separate software systems exchange data and trigger each other's actions. The scope usually covers more than writing the first connection: it includes the architecture, the data rules, the failure handling and the monitoring that keep the connection healthy over time.

What Is an API?

An API (application programming interface) is a defined way for one piece of software to ask another to do something or hand over data. A CRM exposes an API so other tools can create a contact. A payment provider exposes one so a checkout page can request a charge. The API is the contract: it states what you can ask for, what you must send, and what you will get back.

What Is API Integration?

API integration is the practice of using those contracts to make two or more systems work together as one process. When a customer pays, the payment system tells the order system, which tells the inventory system, which tells the accounting system. Each hop is an API call, and the integration is the logic that sequences them, transforms the data between them and copes when one hop fails.

How APIs Connect Business Applications

Applications rarely speak the same language natively. One system calls it a "customer", another a "contact", a third an "account", and each has different required fields, ID formats and date conventions. An integration sits between them, translates, and decides what happens when the translation is not clean. Think of it less as a pipe and more as an interpreter with a rulebook.

API Integration vs. Manual Data Transfer

Manual transfer means a person exports a CSV, reformats it and imports it somewhere else. It works for a handful of records and fails quietly at scale: files get stale, columns shift, someone is on holiday. An integration moves the same data continuously, applies the same rules every time, and leaves an audit trail. The cost of manual transfer is rarely visible on one invoice, which is exactly why it persists. We cover that hidden cost in the cost of inefficient workflows.

Why Businesses Use API Integrations

The reasons are practical: fewer re-keyed records, faster handoffs between teams, and one version of the truth across tools. Over time they also become a growth enabler, because new tools can be plugged into a stable integration layer instead of being wired point to point into every other system.

Why Do Businesses Need API Integration?

Most companies do not have a technology shortage. They have a connection shortage: good tools that each hold a slice of the picture and cannot see each other.

Connecting Disconnected Business Systems

Sales lives in the CRM, orders in the shop, invoices in accounting, stock in a warehouse tool. When those do not talk, people become the integration layer, copying data between screens. Connecting them removes the human relay and makes cross-system questions answerable, such as which customers with an open invoice also have an open support ticket.

Automating Data Exchange

Once systems exchange data on their own, routine events become automatic: a won deal creates a customer in the ERP, a shipped order updates the CRM timeline. The key is that the automation is event-driven and rule-based, so it behaves identically at 3 a.m. and on a Monday morning.

Reducing Manual Data Entry

Every re-typed field is a chance for a typo, a skipped record or a delay. Removing the retyping does not just save time, it removes a whole class of errors. Teams often find their most skilled people were spending a surprising share of the week on this kind of shuffling.

Improving Operational Efficiency

Efficiency gains come from removed waiting, not just removed typing. An order that waits for someone to key it into the ERP is an order that ships later. When the handoff is automatic, work moves at the speed of the slowest real task, not the slowest copy-and-paste.

Creating Real-Time Data Flows

Some data cannot afford to be a day old: stock levels, payment status, fraud signals. Webhooks and event streams let a change in one system reach another within seconds. Not everything needs this, and real time costs more to build and operate, so we pick it where the business actually benefits.

Improving Customer Experiences

Customers feel integration gaps directly. They are asked for the same details twice, told an item is in stock that is not, or receive a confirmation that contradicts their invoice. Consistent data across systems is what makes the experience feel coherent, and it is also what lets a support agent or a chatbot answer accurately. See AI chatbot API integration for the conversational side of this.

Supporting Business Growth

A company with three tools can survive on manual glue. A company with fifteen cannot. An integration layer with clear contracts lets you add a new payment provider, marketplace or analytics tool without rewiring everything else.

Reducing Data Errors

Validation at the integration boundary catches bad data once, in one place, instead of letting it spread into five systems. A consistent mapping also means a phone number or tax ID is formatted the same way everywhere, which makes reconciliation and reporting far less painful.

Common Business Applications Connected Through APIs

The pairings below come up repeatedly. The specific quirks differ by vendor, but the failure patterns are remarkably consistent.

CRM and Customer Management Systems

CRM integrations typically sync contacts, companies, deals and activity between sales tools, marketing platforms and support desks. The classic hazards are duplicate records (the same person created by two sources) and conflicting edits (two systems updating the same field). A clear rule for which system owns which field prevents most of the pain. For a worked example involving AI and a SQL-backed CRM, see AI CRM with GPT and SQL Server integration.

ERP and Accounting Platforms

ERP and accounting systems care about accuracy more than speed. Integrations here usually push orders, invoices and payments in, and pull balances and status out. Double-posting is the nightmare scenario, which is why idempotency (covered below) matters so much for financial transfers.

E-Commerce Platforms

Storefronts generate a constant stream of orders, customers, refunds and stock changes. They tend to rely on webhooks for events and on APIs for bulk reads, and they are the classic place where rate limits bite during a sale or a bulk catalogue update.

Payment Systems

Payment APIs are where reliability is least forgiving. A timeout does not tell you whether the charge happened. Good integrations treat the payment provider's own record as the source of truth and reconcile against it, rather than trusting whatever the last response said.

Marketing Platforms

Email, ads and analytics tools consume customer and event data. The usual challenges are consent and suppression lists (an unsubscribed person must stay unsubscribed everywhere) and keeping audience segments in step with the CRM.

Cloud Applications

Cloud storage, identity providers, collaboration tools and infrastructure services all expose APIs. Integrations here often involve OAuth, scoped permissions and background jobs that act on behalf of users, so token handling and least-privilege access deserve attention.

Inventory Management Systems

Inventory sits at the crossroads of sales channels, warehouses and suppliers. Overselling happens when stock updates arrive late or out of order, so these integrations care about event ordering, reservation logic and periodic reconciliation.

Internal Business Applications

Custom internal tools, spreadsheets with scripts and in-house databases are frequently the least documented systems in the stack. They may have no API at all, in which case we put a thin service in front of them so other systems have something stable to call.

Third-Party SaaS Applications

Every SaaS vendor sets its own rules for authentication, pagination, rate limits and change management. We read the vendor's documentation as a starting point and then test its real behaviour, because the two do not always match.

How API Integration Works

Every integration, however sophisticated, is built from the same seven moving parts.

Client app -> (1) request + credentials -> API gateway/server
API server -> (2) validate, authorize -> (3) process
API server -> (4) data back -> (5) response + status code -> Client app
Client app -> (6) handle success or error -> (7) log, measure, alert

Application Sends an API Request

A request has a method (GET to read, POST to create, PUT or PATCH to update, DELETE to remove), a URL, headers and often a JSON body. The sending application builds it from its own data, which is where mapping begins.

API Authentication

Before doing anything, the API wants to know who is asking. Common schemes are API keys, OAuth 2.0 (with access tokens that expire and refresh tokens that renew them), JWTs and mutual TLS. The practical lesson is that credentials expire, rotate and get revoked, and an integration that does not plan for that will fail at an inconvenient moment.

Request Processing

The server validates the request, checks permissions, applies business rules and performs the action. Some work is quick and finishes synchronously; heavier work is queued and acknowledged with a "202 Accepted" and a way to check later. Knowing which behaviour you are dealing with changes how you design the caller.

Data Exchange

Payloads usually travel as JSON, sometimes XML or CSV. Large collections arrive in pages, using offsets, page numbers or opaque cursors. Cursor-based paging is generally the safer pattern, because offset paging can skip or repeat records when data changes between calls.

API Response

The response carries a status code and a body. 2xx means success, 4xx means the request was wrong or not allowed, and 5xx means the server failed. Reading the status code correctly is the foundation of error handling, which we return to in detail below.

Error Handling

Not every error means the same thing. A 400 or 422 will not succeed if you resend it unchanged. A 429 or 503 is usually temporary. A network timeout is ambiguous. An integration that treats all failures alike will either give up too early or hammer a struggling service.

Logging and Monitoring

Every call should leave a trace: a correlation ID that follows a business event across systems, the status code, the latency, and a redacted copy of what was sent. Without this, "the sync is broken" becomes a day of guesswork instead of a five-minute lookup.

Types of API Integrations

There is no single best style. The right choice depends on the systems involved, how fresh the data must be, and how much traffic there is.

TypeBest forStrengthsWatch out for
RESTGeneral purpose web APIsSimple, widely supported, easy to cacheOver-fetching, inconsistent conventions between vendors
SOAPOlder enterprise and financial systemsFormal contracts (WSDL), built-in standardsVerbose XML, heavier tooling
GraphQLFlexible reads across related dataClient picks exact fields, single endpointQuery cost control, errors can arrive with a 200 status
WebhooksEvent notificationsNear real time, no wasted pollingMust verify signatures, handle duplicates and retries
BatchLarge volumes, nightly jobsEfficient, easy to reconcileData is not fresh, large failures are harder to isolate

REST API Integration

REST is the default for most modern SaaS. Resources have URLs, verbs carry intent, and JSON is the usual format. The caveat is that "REST" is a style, not a standard, so pagination, error shapes and filtering vary widely and each vendor needs its own adapter.

SOAP API Integration

SOAP is still common in banking, insurance, government and long-lived ERP systems. Its WSDL contracts make strong typing possible, and generated client code can help. The cost is verbosity and rigid versioning, so we usually wrap a SOAP service in a cleaner internal interface rather than letting its XML leak across the rest of the stack.

GraphQL API Integration

GraphQL lets the caller ask for exactly the fields it needs, which reduces round trips. For integrations, remember that a GraphQL response can return HTTP 200 with an errors array, so success must be judged by the body, not just the status code. Query complexity limits also act as the rate limit.

Webhook-Based Integrations

A webhook flips the direction: instead of you asking "anything new?", the source calls your endpoint when something happens. It is efficient and fast, but you are now running a public endpoint that must verify who is calling, tolerate duplicate deliveries and respond quickly. We compare it with polling in the next sections.

Third-Party API Integration

Integrating with someone else's API means you do not control its uptime, limits or changes. The defensive posture is to isolate each vendor behind an adapter in your code, so a vendor change touches one module instead of the whole system.

Internal API Integration

Connecting your own services is easier in some ways (you control both ends) and harder in others (nobody documents the thing everyone depends on). Contracts, versioning and ownership matter even more when the "vendor" sits two desks away.

Real-Time API Integration

Real time means a change propagates within seconds, typically through webhooks, message queues or streaming. It suits payments, stock and alerts. The trade-off is operational: you need queues, ordering rules and monitoring for something that is always running.

Batch API Integration

Batch jobs move data on a schedule, such as a nightly financial export. They are simple to reason about and easy to reconcile, and they are often the correct answer for reporting and accounting, where freshness to the second adds cost without adding value.

API Development and Integration Services

Integration and API development are related but not identical. Development builds an API that others can consume; integration consumes APIs to connect systems. Many projects need both, which is why this scope is often bundled.

Custom API Development

When a system has no usable API, we build one: a clean, versioned interface in front of a database or legacy application, with sensible resource design, pagination, and consistent errors. The aim is a contract other teams and tools can rely on.

Third-Party API Integration

This is the consumption side: reading a vendor's documentation, building an adapter, handling its authentication, limits and quirks, and testing against its sandbox. Where vendors offer no sandbox, we are extra careful about what runs against production.

API Architecture Design

Architecture decisions come before code: synchronous call or queue, webhook or poll, one-to-one or hub-and-spoke, where data is transformed, and which system is the source of truth. Getting these right early is much cheaper than untangling them later. For wider context, see our guide to product engineering services.

API Authentication and Security

Authentication, authorization, secret storage and transport encryption are designed in, not bolted on. We choose the narrowest scopes that work, keep credentials out of source code, and plan for rotation from day one.

Data Transformation

Transformation converts between formats, units, enumerations and structures, and enforces validation. We keep mapping rules in one declarative place wherever possible so a business analyst can read them and a test can check them.

API Testing

Useful testing combines unit tests of the mapping logic, contract tests that detect when a vendor changes a response, and end-to-end tests against sandboxes. We also test the unhappy paths on purpose: timeouts, malformed payloads, duplicate events and expired tokens.

API Documentation

An undocumented integration is a liability. We document each data flow, its owner, its credentials location, its failure behaviour and how to replay a failed event, so the next person is not reverse-engineering it under pressure.

API Monitoring

Monitoring tracks success rate, latency, queue depth, retry counts and the age of the oldest unprocessed item. Alerts should fire on symptoms that matter to the business, not on every transient blip.

Integration Maintenance

Integrations are living things. Vendors deprecate versions, certificates expire and traffic grows. A maintenance routine, even a light one, is what stops a working integration from becoming a broken one without anyone noticing.

Custom API Integration Services

Custom does not mean "more code for its own sake". It means the situation really does not fit a standard connector.

When Standard Integrations Are Not Enough

Here is the honest part: do not write custom integration code if you do not have to. If your CRM and email platform have a maintained native connector that does what you need, use it. If the job is "when a form is submitted, create a row and send a Slack message", an automation platform such as n8n, Zapier or Make will do it faster and cheaper, and a non-developer can maintain it.

Custom engineering earns its place when the volume is high, when the logic has real branching and money consequences, when you need exactly-once behaviour, strict audit trails or low latency, when the vendor's connector is shallow or missing the endpoints you need, or when one flow touches many systems and must fail safely. A fair test is this: if a failure would cost real money or customer trust and the platform gives you no control over retries, idempotency or alerting, you have outgrown it. We lay out how we think about workflow tooling in AI automation development.

Connecting Custom Business Applications

Bespoke systems built over the years often have no documented interface. We start by inspecting what exists (database views, file drops, internal endpoints) and then put a stable API in front of it. The business application keeps running while everything else gets a clean way to talk to it.

Custom Data Mapping

Real mapping goes beyond renaming fields. It covers units, currencies, time zones, status lifecycles, nullable values and records that exist in one system but not the other. A short example of an explicit mapping rule, written as data rather than buried in code:

{
  "source": "shop.order",
  "target": "erp.sales_order",
  "fields": {
    "id": { "from": "order_number", "type": "string" },
    "customerRef": { "from": "customer.external_id", "required": true },
    "total": { "from": "total_price", "type": "decimal", "scale": 2 },
    "currency": { "from": "currency", "transform": "uppercase" },
    "status": {
      "from": "fulfillment_state",
      "map": { "unfulfilled": "OPEN", "partial": "PART_SHIPPED", "fulfilled": "CLOSED" },
      "default": "REVIEW"
    }
  }
}

The default: "REVIEW" line is deliberate: an unknown status should land in a human review queue, not silently become something wrong.

Custom Authentication

Some partners require mutual TLS, signed requests, rotating tokens or on-premise gateways. These are solvable, but they need real design: where secrets live, who can rotate them and what happens during the rotation window.

Custom Business Logic

Integrations often need rules that neither system provides, such as "only sync orders above a certain review threshold" or "hold shipments until credit is approved". We keep that logic explicit, tested and separate from transport code, so a rule change does not require touching the HTTP layer.

Legacy System Integration

Legacy systems usually expose files, database access or old protocols rather than modern APIs. We cover this in a dedicated section below and in our guide to legacy application modernization.

Custom Workflow Automation

When an integration is only one step in a longer process, approvals, enrichment and exception handling come into play. This is where integration and workflow design meet, and it is the territory of AI automation development.

Scalable Integration Architecture

Scalable means a spike in volume queues work instead of dropping it. We decouple receiving from processing with a queue, make workers stateless so they can scale out, and respect downstream limits with controlled concurrency.

How to Build Reliable API Integrations

This is the heart of the matter. A reliable integration is the result of a sequence of deliberate choices, not a single clever trick.

Define Integration Requirements

Start with business events and outcomes, not endpoints. Which event triggers the flow? What must be true when it finishes? How fresh must the data be, how many records per day, and what happens on failure? Vague requirements produce integrations that are either wasteful or fragile.

Identify Systems and Data Sources

List every system involved and decide the source of truth for each data entity. If both the CRM and the ERP can edit a customer's address, you have designed a conflict. Decide ownership once, write it down and enforce it.

Choose the Appropriate API Architecture

Pick the style per flow. Payment status deserves webhooks plus reconciliation. A nightly ledger export suits batch. A small, low-risk sync might be a simple poll. Mixed approaches in one system are normal.

Webhooks versus polling is the most common decision. Webhooks are timely and cheap in traffic, but they can be missed (your endpoint was down), arrive twice, or arrive out of order. Polling is simple and self-healing, but it wastes calls and adds delay. The robust pattern combines them: use webhooks for speed and a periodic poll or reconciliation job as a safety net.

Design Data Mapping

Treat the mapping as a first-class artefact: versioned, reviewed and tested with real sample records, including ugly ones. Validate on the way in, normalise internally, and map out to each target. Having one canonical internal shape means adding a new system adds one adapter, not many.

Implement Authentication

Use the vendor's recommended flow, store secrets in a secrets manager, and refresh tokens proactively before they expire. Handle a 401 by refreshing once and retrying once, not in a loop, and alert when refresh itself fails.

Build Error Handling

Classify errors into three buckets: permanent (fix the data, do not retry), transient (retry with backoff) and ambiguous (verify before acting). Permanent failures go to a dead-letter queue with the reason attached, so a person can fix and replay them. That classification is the single biggest difference between a robust integration and a noisy one.

Add Retry Mechanisms

Retries need discipline. Use exponential backoff with jitter so thousands of clients do not retry in lockstep, cap the number of attempts, and honour a Retry-After header when the server sends one. A compact version in TypeScript:

async function callWithRetry(send: () => Promise<Response>, maxAttempts = 5) {
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
    let res: Response | undefined;
    try {
      res = await send();
    } catch (err) {
      // network error or timeout: ambiguous, treat as retryable
    }
    if (res && res.ok) return res;
    if (res && ![429, 502, 503, 504].includes(res.status)) {
      throw new Error("Permanent failure: " + res.status); // 4xx: do not retry
    }
    if (attempt === maxAttempts) throw new Error("Gave up after retries");

    const retryAfter = Number(res?.headers.get("Retry-After")) * 1000;
    const backoff = Math.min(30000, 500 * 2 ** attempt);   // exponential, capped
    const jitter = Math.random() * backoff;                // full jitter
    await new Promise(r => setTimeout(r, retryAfter || jitter));
  }
}

The retry is only safe for operations that cannot be applied twice, which is why idempotency appears again in the error handling section below.

Implement Logging

Log structured events, not free text: a correlation ID, the system, the operation, the status, the duration and the attempt number. Redact personal data and secrets. When something goes wrong, you want to trace one order through every system in a single search.

Monitor API Performance

Watch success rate, p95 latency, retry rate, queue depth and the age of the oldest message. A rising retry rate is often the first sign a vendor is degrading, well before a hard failure.

Test Integration Workflows

Test against sandboxes, replay recorded real payloads, and deliberately inject failure: kill the network mid-call, return a 503, send the same webhook twice, send events out of order. If you have never watched the integration fail safely in testing, you have only hoped it will.

API Integration Security Best Practices

Integrations hold powerful credentials and move sensitive data, which makes them an attractive target. Security is a design property, not a final checklist.

API Authentication

Prefer short-lived tokens over long-lived static keys, and use OAuth 2.0 where the vendor supports it. For service-to-service calls, the client credentials flow with tightly scoped access is a common fit. Where a static key is unavoidable, treat it as a password.

Authorization and Access Controls

Authentication says who you are; authorization says what you may do. Grant the integration only the scopes it needs, such as read access to orders and write access to one object type, rather than full admin. A compromised read-only integration is an inconvenience, while a compromised admin integration is an incident.

Secure API Keys and Credentials

Never commit secrets to source control, paste them into chat or leave them in workflow tool fields that many people can view. Use a secrets manager, separate credentials per environment, and rotate on a schedule and whenever someone with access leaves.

Data Encryption

Use TLS for every connection, and encrypt sensitive data at rest. Be deliberate about what gets stored: if an integration does not need to retain card or identity data, it should not.

Rate Limiting

Rate limiting protects your own endpoints from abuse and runaway clients, just as vendors apply it to you. Throttle inbound webhook endpoints, apply per-client quotas on APIs you publish, and return a 429 with Retry-After so well-behaved clients slow down.

Input Validation

Treat every payload as untrusted, even from a trusted partner. Validate against a schema, reject unexpected fields, limit sizes and sanitise anything that reaches a database or a template. Webhook receivers should also verify the sender. A typical signature check looks like this:

import { createHmac, timingSafeEqual } from "node:crypto";

function isValidSignature(rawBody: string, signatureHex: string, secret: string) {
  const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(signatureHex, "hex");
  return a.length === b.length && timingSafeEqual(a, b); // constant-time compare
}

Compute the HMAC over the raw request body, exactly as received, before any JSON parsing. Where the sender includes a timestamp, reject old ones to prevent replay. The exact header name and scheme differ by provider, so follow each vendor's documentation.

Monitoring Suspicious Activity

Alert on unusual patterns: spikes in failed authentication, requests from unexpected locations, sudden volume changes, or access to endpoints a client has never used. Audit logs should answer who accessed what and when.

Managing Third-Party API Access

Keep an inventory of every vendor with access to your data, what scopes they hold and who owns the relationship. Remove access when a contract ends, and review it on a schedule. Unused integrations with live credentials are a common blind spot.

Common API Integration Challenges

Most integration incidents trace back to a short list of causes. Knowing them in advance is half of preventing them.

Incompatible Data Formats

Dates in different formats, amounts as strings or integers in minor units, free-text fields mapped to strict enumerations. The fix is explicit normalisation at the boundary and tests built from real, messy samples.

Authentication Problems

Expired tokens, rotated keys, changed scopes and clock skew on signed requests cause a large share of outages. They tend to occur at 2 a.m. because the expiry was set months ago and nobody put it in a calendar. Proactive refresh and an alert on repeated 401 responses solves most of it.

API Rate Limits

Vendors cap requests per second, per minute or per day, and the limit may be shared across all your integrations. The answer is a client-side throttle, queued work and backoff on 429, rather than hoping you will stay under the ceiling. Bulk jobs should run off-peak or use the vendor's bulk endpoints.

Version Changes

Vendors add fields, rename them, deprecate endpoints and eventually switch old versions off. Pin to an explicit API version, subscribe to the vendor's changelog, and write contract tests that fail the day a response shape shifts. Schema drift that goes unnoticed turns into silent bad data, which is much worse than a loud error.

Third-Party API Downtime

Every external API goes down eventually. A resilient integration queues work while the vendor is unavailable, stops calling it after repeated failures (a circuit breaker), and resumes with a controlled ramp rather than a flood. Users should see a degraded but honest state, not a crash.

Data Synchronization Issues

Two systems that both accept edits drift apart. Prevent it with clear ownership, change timestamps or version numbers for conflict detection, and a scheduled reconciliation job that compares counts and key fields and reports differences.

Integration Failures

Partial failure is the hard case: step one succeeded, step two did not. Design multi-step flows so each step can be retried safely, record progress, and provide a compensating action (such as a refund or a cancellation) where a flow cannot be completed.

Legacy Application Compatibility

Older systems may only offer batch exports, direct database access or protocols that modern tools do not speak. They also tend to have no sandbox, so a test can touch real data. We handle these with an adapter layer and careful read-only discovery first.

Inconsistent API Documentation

Documentation lags reality, examples fail, and edge cases are discovered in production. We verify behaviour with real calls, record what we find, and keep our own notes on each vendor's quirks. It is not glamorous, but it prevents repeat mistakes.

How to Handle API Integration Errors

Error handling is where an integration earns its keep. The aim is not to avoid failure, which is impossible, but to make every failure visible, bounded and recoverable.

Detecting Failed API Requests

Check the status code, but also validate the body. Some APIs return 200 with an error payload, and some return a success status for an operation that was only accepted and not completed. Define what "done" means for each call and verify it.

HTTP Error Responses

The status code tells you what to do next.

StatusMeaningTypical action
400, 422Request invalidDo not retry. Fix the data, route to a review queue
401Credentials missing or expiredRefresh once, retry once, then alert
403Authenticated but not permittedDo not retry. Check scopes and permissions
404Resource not foundDecide if it is a real absence or a sync-order issue
409ConflictOften a duplicate or version conflict; fetch current state
429Rate limitedWait for Retry-After, then retry with backoff
500, 502, 503, 504Server or gateway problemRetry with backoff and jitter, within a cap

Retry Logic

Retry only what is safe and likely to succeed: network failures, 429, 502, 503 and 504. Never retry a 4xx that indicates bad input, because it will fail the same way every time. Always cap attempts and total elapsed time, and send persistent failures to a dead-letter queue rather than retrying forever.

Timeout Handling

Set explicit connection and read timeouts on every call; the default is often "wait indefinitely". A timeout is the most dangerous outcome because it is ambiguous: the server may have processed the request and the response was lost. The correct response is to check the outcome, or retry using an idempotency key, never to assume failure.

Logging Failed Requests

Store enough context to diagnose and replay: the correlation ID, a redacted request, the response, the attempt count and the final disposition. A failed request that cannot be replayed is a data loss event. A good dead-letter record answers "what happened, and how do I re-run it?" without anyone needing to read code.

Alerting and Monitoring

Alert on conditions people can act on: failure rate above a threshold, a dead-letter queue that is growing, no successful sync in the expected window, or authentication failures. Silence is also a signal, so alert when an expected event does not arrive, not only when an error does.

Preventing Duplicate Transactions

This is the one that costs real money. If a payment request times out and you retry it, you may charge the customer twice. The standard defence is an idempotency key: a unique ID the client generates once per business operation and sends with every attempt, so the server recognises repeats and returns the original result instead of repeating the action. Many payment APIs support this directly through a request header.

const idempotencyKey = "order-" + order.id + "-charge-v1"; // stable per business operation

await callWithRetry(() =>
  fetch(paymentUrl, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Idempotency-Key": idempotencyKey,   // same key on every retry
    },
    body: JSON.stringify({ orderId: order.id, amount: order.totalMinorUnits }),
  })
);

The same principle applies on the receiving side. Webhook providers commonly deliver at least once, so duplicates are normal. Store the event ID and skip anything you have already processed. If the other system offers no idempotency support, keep your own ledger of completed operations and check it before acting.

Recovering From Integration Failures

Recovery needs tooling, not heroics. We want to replay a failed event once the cause is fixed, re-sync a time window from the source of truth, and reconcile totals between systems. A reconciliation job that compares yesterday's order count and value on both sides catches the silent failures that no alert will. If your automations keep failing in production, how to fix a failed automation project goes deeper on recovery.

API Integration Services for Legacy Applications

Older systems still run a great deal of real business. The goal is rarely to replace them overnight; it is to stop them being an island.

Connecting Legacy Systems With Modern Applications

Legacy platforms may only provide flat-file exports, database tables, SOAP services or screen-based interfaces. We connect them through whichever channel is the most stable and least risky, usually a read-only path first, and add write access only once the behaviour is well understood.

Building API Layers Around Legacy Systems

The cleanest pattern is a thin API layer (sometimes called a facade or anti-corruption layer) that presents the legacy system as a modern, documented interface. Everything else in the company calls the facade, so the legacy quirks are contained in one place and can be replaced later without breaking the callers.

Web app / CRM / mobile -> REST facade (auth, validation, logging) -> adapter -> legacy ERP
                                  |
                                  +-> queue (writes) -> worker -> legacy ERP (rate-controlled)

Data Transformation

Legacy data often carries fixed-width fields, old character encodings, coded values and inconsistent dates. The facade is where those are cleaned and translated, so downstream systems receive predictable, validated data.

Modernizing Existing Integrations

Many companies already have integrations: scripts, scheduled exports, one-off connectors built by someone who left. Rather than rewrite them all at once, we inventory them, rank them by business risk, add monitoring first and then replace the fragile ones one at a time.

Reducing Dependence on Manual Processes

Where legacy systems force staff to rekey data or run exports by hand, an integration layer can take over those steps. The legacy system continues to do what it does well, and people stop being the connector.

Supporting Gradual Application Modernization

An API layer is also a safe route to modernization. Once callers talk to the facade, you can move one function at a time from the old system to a new one behind it, without a risky big-bang cutover. Our full approach is in legacy application modernization, and the related service page is legacy modernization.

API Integration Services for Business Automation

Integrations are the plumbing that business automation runs on. Once the connections are reliable, you can build useful processes on top of them.

Automating Data Synchronization

Keep customer, product and pricing data consistent across tools without manual exports. Choose the direction and trigger carefully: one-way sync is far simpler and safer than two-way, so use two-way only where it is genuinely needed and conflict rules are clear.

Automating Customer Workflows

New signup creates a CRM record, triggers onboarding emails and opens a support profile. A closed ticket updates the customer timeline. These flows make customers feel looked after without adding staff effort.

Automating Order Processing

An order arrives, stock is reserved, payment is confirmed, fulfilment is notified and the customer receives tracking. Every step crosses a system boundary, so the quality of this flow depends on idempotency, ordering and clear handling for the unhappy paths such as payment failure or out-of-stock.

Automating Financial Data Transfers

Invoices, payments, payouts and ledger entries need accuracy and an audit trail. We favour explicit reconciliation, immutable logs and human review for exceptions over clever shortcuts. For a related example, see AI invoice processing in construction.

Automating Inventory Updates

Stock changes from sales, returns, purchase orders and warehouse counts need to flow to every sales channel quickly enough to avoid overselling. A mix of events for speed and scheduled reconciliation for correctness works well here.

Connecting Internal Workflows

Approvals, handoffs between departments and internal requests often span several tools. An integration layer lets those steps trigger each other, with notifications and a clear record of who did what.

Reducing Repetitive Tasks

The point of all of this is to give people their time back for work that needs judgment. Start with the highest-volume, lowest-judgment task, prove it, and expand. A short list of high-value starting points is in 5 automations every founder should implement.

API Integration Service vs. Building an Integration In-House

Neither option is automatically right. The decision turns on your team's capacity, the risk of the flow and how long you will need to maintain it.

FactorIn-house buildExternal integration service
Team capacityUses your own engineers, who may be committed to product workAdds focused integration experience without hiring
Familiarity with the businessStrong from day oneBuilt up during discovery
Pattern experienceDepends on the team's past projectsReuses retry, idempotency and monitoring patterns
MaintenanceStays with your teamCan be shared or handed over, with documentation
Speed to a first working versionSlower if the team is stretchedTypically faster for well-scoped work
Long-term knowledgeStays inside the companyNeeds good documentation and handover

Internal Development Resources

If you have engineers with spare capacity and integration experience, building in-house can be the right choice. The risk is usually opportunity cost: integration work pulls your best developers away from the product and tends to be underestimated.

Integration Complexity

A single, well-documented API with a sandbox is a modest project. Several systems, legacy platforms, financial consequences and strict ordering rules make it a different class of work. Complexity compounds with the number of systems and the number of ways a flow can fail.

Security Requirements

Regulated data, strict audit demands or enterprise customer requirements raise the bar for credential handling, logging and access control. If nobody on the team has done this before, the learning should not happen on live customer data.

Ongoing Maintenance

The first release is typically the smaller part of the lifetime effort. Vendors change, tokens expire, volume grows and staff move on. Whoever owns the integration must own its monitoring and upkeep too.

Third-Party API Changes

Vendors deprecate versions on their own schedule. Someone needs to read the changelogs, test against new versions and update adapters in time. If that someone does not exist, the integration will eventually break unannounced.

Scalability Requirements

A flow built for a hundred orders a day may fall over at ten thousand. If growth is expected, design for queues, controlled concurrency and rate-limit awareness now, because retrofitting them is more expensive than building them in.

When External API Integration Services May Be Appropriate

Consider outside help when the flow carries financial or contractual risk, when it spans several systems including a legacy one, when your team lacks integration experience or capacity, or when you need monitoring and ongoing support rather than a one-off build. Equally, a native connector or an automation platform may be the better choice if the flow is simple and low risk, and we say so when that is the case. For the reliability side, see our API reliability solution.

API Integration Project Process

A predictable process keeps integration projects from drifting. The steps below are how we usually structure the work.

Requirements Discovery

We map the business events, the systems involved, the volumes and the definition of success. Interviews with the people who run the processes today surface the exceptions that never appear in a specification.

API Assessment

We review each API's documentation and test its real behaviour: authentication, rate limits, pagination, error formats, sandbox availability and versioning policy. Surprises found here cost little; surprises found in production cost a lot.

Integration Architecture

We decide the pattern for each flow (webhook, poll, batch, queue), where data is transformed, how failures are handled and how the system is observed. The outcome is a short design document the client can review before any significant build begins.

Data Mapping

Field-by-field mapping is agreed with the people who understand the data, covering transformations, defaults and what happens with records that do not fit. This is also where source-of-truth decisions are finalised.

Development

We build adapters, mapping logic, queues and monitoring in small increments, so working slices can be reviewed early. Secrets, configuration and environments are set up properly from the start.

Testing

Testing covers unit tests for mappings, contract tests against vendor APIs, end-to-end runs in sandboxes and failure drills: duplicate events, timeouts, expired credentials and rate limits.

Security Validation

Before go-live we review scopes, secret storage, transport security, input validation and logging for sensitive data. Anything that fails gets fixed before real data flows.

Deployment

We prefer a staged rollout: run in shadow mode or on a subset of records, compare results, then switch over. A rollback plan is agreed before the switch, not after a problem.

Monitoring

Dashboards and alerts go live with the integration, not afterwards. The team should know on day one what "healthy" looks like and who is notified when it is not.

Ongoing Maintenance

After launch, someone reviews failures, tracks vendor changes, rotates credentials and tunes performance. This can sit with the client's team, with ours, or be shared, but it should have an owner.

API Integration Services Cost: What Affects Pricing?

Eunix Tech does not publish fixed prices for integration work, and we would be wary of any provider who quotes a number without knowing your systems. Scope decides cost, and two projects that both sound like "connect the CRM to the ERP" can differ enormously. What follows is the framework we use to size a project. For a broader view of how software scope drives cost, see AI software development cost.

DriverWhy it mattersEffect on scope
Number of applicationsEvery system adds its own adapter, auth and failure modesGrows roughly with the number of connections, not just systems
API complexityQuality of documentation, sandbox availability, quirksPoor APIs need more discovery and defensive code
Number of endpointsEach endpoint needs mapping, error handling and testsMore endpoints, more build and test effort
Data transformationFormat differences, enrichment, validation rulesHeavy transformation increases mapping and testing time
AuthenticationAPI key versus OAuth versus mutual TLS or signed requestsComplex schemes add design and secret-management work
Custom business logicRules beyond simple copyingNeeds specification, tests and stakeholder review
Security requirementsRegulated data, audit logs, access reviewsAdds controls, documentation and validation
TestingSandbox availability, volume tests, failure drillsRigorous testing increases effort but reduces risk
Monitoring and maintenanceDashboards, alerting, support expectationsOngoing effort, scaled to how critical the flow is
Legacy compatibilityNo API, odd protocols, no sandboxOften the largest single scope multiplier

Number of Applications

Two systems with one flow are a small project. Six systems with a dozen flows are an architecture project. Connections multiply faster than systems, so a hub-style design is often cheaper to run than point-to-point wiring.

API Complexity

A clear REST API with a sandbox and good documentation is quick to integrate. A poorly documented one with inconsistent responses takes more experimentation and defensive code, and that shows up in the effort.

Number of Endpoints

Reading a customer is one endpoint. A full order lifecycle may touch dozens. Each needs mapping, error handling and a test, so the endpoint count is one of the most reliable indicators of build effort.

Data Transformation Requirements

Straight field copies are cheap. Reconciling different data models, de-duplicating records, enriching values and validating against business rules is where the time goes.

Authentication Requirements

An API key is trivial. OAuth with refresh, multi-tenant credentials, signed requests or on-premise connectors take real design and testing, and credential rotation needs a plan.

Custom Business Logic

Every conditional rule needs to be specified, built and tested, ideally with the business owner. Unclear rules are the usual cause of rework.

Security Requirements

Handling regulated data or meeting a customer's security review adds work: extra logging, encryption choices, access controls and documentation. It is worth doing and worth scoping honestly.

Testing Requirements

Testing effort rises when sandboxes are missing, when volume matters, or when a failure would be expensive. We would rather you budget for it than skip it.

Monitoring and Maintenance

Monitoring and upkeep are ongoing, not one-off. A flow that moves money or orders deserves more attention than a nightly report export, and the support arrangement should reflect that.

Legacy System Compatibility

Without an API, a sandbox or documentation, legacy systems need careful discovery and a protective adapter layer. This is frequently the biggest scope variable, and it is best discovered early.

If you would like a scoped estimate, contact us with the systems involved and what you want to happen, and we will tell you what we would need to size it properly.

How to Choose an API Integration Services Provider

When comparing providers, look past the logo slide and test how they think about failure.

API Development Experience

Ask what APIs they have designed and run, not just consumed. Teams that have built APIs understand versioning, pagination and error design from the other side, and it shows in how they integrate.

Integration Architecture Expertise

A good provider can explain why they would choose a queue over a direct call, or a webhook plus reconciliation over polling, and what the trade-offs are. If every answer is "we will connect it", keep looking.

Security Knowledge

Ask how they store secrets, scope access, verify webhooks and handle sensitive data in logs. Concrete answers are a good sign; vague reassurance is not.

Experience With Third-Party APIs

Ask about the specific platforms in your stack and the awkward behaviour they have met. Experience with real vendor quirks, such as rate limits and eventual consistency, saves time.

Testing and Quality Assurance

Ask how they test failure, not just success. Do they run duplicate-event and timeout drills? Do they use contract tests to detect vendor changes?

Monitoring and Support

Find out what happens after launch: who is alerted when a sync fails at night, how failures are replayed and how quickly vendor changes get handled. A provider with no answer for this is selling a build, not a working integration.

Documentation Practices

You should receive data-flow diagrams, mapping specifications, runbooks and credential locations. If the knowledge lives only in someone's head, you are renting it.

Experience With Legacy Systems

If you run older platforms, ask for examples of how a provider has dealt with systems that lack modern APIs. Caution with production data and a read-only first phase are good signs.

Ability to Scale Integrations

Ask how the design behaves at ten times the volume. Queues, back-pressure and rate-limit awareness should come up unprompted.

Common API Integration Mistakes

These are the mistakes we see most often, including some we made early on ourselves.

Skipping Requirements Planning

Starting to code before agreeing the events, owners and failure behaviour leads to rework. A few hours of planning prevent weeks of correction.

Poor Authentication Management

Hard-coded keys, shared credentials and tokens that nobody tracks are accidents waiting to happen. Use a secrets manager, narrow scopes and a rotation routine.

Ignoring API Rate Limits

An integration that works with ten records can fall over with ten thousand. Throttle on the client, respect Retry-After and use bulk endpoints for large jobs.

Failing to Handle Errors

The default behaviour of many tools is to stop on the first error or, worse, carry on silently. Classify errors, retry the right ones, and route the rest to a place where a person can see them.

Not Monitoring Integrations

An integration with no monitoring has not failed yet as far as you know. Track success rates and the age of unprocessed items, and alert on silence as well as errors.

Ignoring API Version Changes

Vendors will change their APIs. Pin versions, read changelogs and use contract tests so a change shows up in testing, not in a customer complaint. If this has already happened to you, why did my AI implementation fail covers related failure patterns.

Poor Data Mapping

Rushed mapping creates subtle errors, such as wrong units, lost time zones and mismatched statuses, that surface weeks later in reports. Test with real, awkward records.

Insufficient Testing

Happy-path testing proves little. Test duplicates, out-of-order events, expired tokens, partial failures and large volumes before go-live.

Failing to Document Integrations

When the author moves on, undocumented integrations become untouchable. Document flows, owners, secrets locations and recovery steps while the knowledge is fresh.

Professional API Integration Services

When we take on an integration project, the sequence is deliberately plain. The value is in doing each step carefully rather than in any secret technique.

Assess Your Existing Applications

We start by understanding what you run today: the systems, their APIs or lack of them, the existing scripts and connectors, and where the manual handoffs are. This is also when we flag anything a native connector could already handle.

Identify Integration Requirements

We turn business goals into specific flows: triggers, data, volumes, freshness, and what should happen on failure. You get a clear, reviewable description before anything is built.

Design a Reliable API Architecture

We choose the patterns that fit the risk: queues, idempotency, webhooks with reconciliation, adapters around vendors and facades around legacy systems. The design explains how each failure mode is handled.

Build and Test the Integration

We build in small increments and test the failure paths on purpose. The aim is that the first time an error occurs is in a test, not in your finance team's inbox.

Secure Data and API Access

Scoped credentials, secret storage, verified webhooks, validated input and sensible logging are part of the build, not an add-on. Where AI components are involved, the same discipline applies; see AI integration services for existing business software.

Monitor Integration Performance

Dashboards, alerts and replay tools go live with the integration, so you can see health at a glance and recover from failures without a developer in the loop for every incident.

Maintain and Scale Your Integrations

We can support the integration after launch, handle vendor changes and extend it as your systems grow, or hand it over cleanly with documentation to your own team.

Why Choose Eunix Tech

Eunix Tech is an AI engineering team that builds integrations, API reliability work, AI systems and custom products, and delivery is remote-friendly. Integration is not a side line for us: it is the foundation under the automation and AI projects we build, because an AI feature that cannot reliably read from and write to your systems is only a demo. That is why we put so much weight on retries, idempotency, monitoring and honest scoping, and why we will tell you when a native connector or a no-code platform is the better answer.

If your flows move money, orders or customer data, our API reliability work is built for that. If the hard part is an older system, our legacy modernization service covers it. And if you are adding AI to a stack that already runs your business, our guide on AI integration for existing business software explains the approach.

Have a system you need connected, or an integration that keeps breaking? Tell us what is involved through our contact page and we will give you an honest view of what it needs.

Conclusion: Building Reliable Connections Between Business Applications

APIs Enable Applications to Exchange Data

APIs are the contracts that let separate systems share data and trigger each other's actions. Used well, they replace manual transfer with consistent, auditable flows that scale with the business.

Reliable Integrations Require More Than Connecting Two Systems

The first call is the easy part. Reliability comes from the details: sensible data mapping, retries with backoff and jitter, idempotency keys that prevent duplicate transactions, rate-limit awareness and a plan for version drift.

Security, Error Handling, and Monitoring Are Essential

Scoped credentials, verified webhooks, validated input, classified errors, dead-letter queues and alerts that people can act on are what turn an integration from a liability into infrastructure. If nobody would notice a failure, nobody will fix it.

Custom Integrations Can Address Complex Business Requirements

When native connectors and automation platforms are enough, use them. When the logic, volume, risk or legacy constraints go beyond that, custom API integration services give you control over exactly the behaviours that matter.

Professional API Integration Services Can Support Long-Term Scalability

Treat integrations as long-lived systems with owners, documentation and maintenance, and they will keep supporting growth. If you want a second opinion on yours, get in touch.

Frequently Asked Questions

What are API integration services?

API integration services cover the design, build, security, monitoring and maintenance of connections between software systems. They include architecture, data mapping, authentication, error handling and ongoing support. The goal is for applications such as your CRM, ERP, payment provider and shop to exchange data reliably without manual effort.

What is an API integration service?

An API integration service is the same thing in the singular: a specific engagement or offering where a provider connects your applications through their APIs. It might be a single connection between two systems or a full integration layer across many. What matters is that it includes reliability and upkeep, not only the initial connection.

How does API integration work?

One application sends a request to another application's API, including credentials. The receiving system validates and processes it, then returns a response with a status code and data. The calling application interprets the result, handles any error, transforms the data as needed and logs what happened.

Why do businesses need API integration?

Because most companies run several tools that each hold part of the picture. Integration removes manual re-entry, reduces errors, speeds up handoffs and makes data consistent across teams. It also makes it easier to add new tools later without rewiring everything.

What is custom API integration?

Custom API integration is an integration built for requirements that standard connectors do not meet, such as unusual data mapping, special authentication, specific business rules, high volume or legacy systems. It gives you control over retries, idempotency, logging and failure handling. It is worth the investment when the flow is business-critical or complex.

What are API development and integration services?

They combine two activities: building APIs so others can use your systems, and integrating existing APIs so your systems can work together. Typical scope includes architecture, authentication, data transformation, testing, documentation, monitoring and maintenance. Many projects need both, for example a new API in front of a legacy system plus integrations with third-party tools.

What types of APIs can be integrated?

Most commonly REST, SOAP and GraphQL APIs, plus webhook-based event feeds and batch interfaces such as scheduled file exchanges. Internal APIs between your own services can be integrated in the same way as third-party ones. The right choice of style depends on the systems and how fresh the data needs to be.

What is the difference between API development and API integration?

API development builds an interface that other software can call. API integration uses existing interfaces to connect systems and move data between them. In practice, you develop an API when a system lacks a usable one, and you integrate when you want systems to work together through the APIs they already have.

How do you build a reliable API integration?

Start by defining the business events and the source of truth for each data item. Then design the mapping, authentication, error classification, retries with backoff and jitter, idempotency and monitoring before you build. Test failure cases deliberately, and plan for ongoing maintenance because vendors change their APIs over time.

How secure are API integrations?

They are as secure as their design. With scoped, short-lived credentials, secrets held in a secrets manager, TLS, input validation, verified webhooks and good audit logging, integrations can be very secure. Weak spots tend to be over-privileged keys, secrets in the wrong place and third-party access nobody reviews.

How do you handle API integration errors?

Classify errors as permanent, transient or ambiguous. Retry transient ones such as 429 and 503 with exponential backoff and jitter, never retry invalid requests, and use idempotency keys so retries cannot create duplicates. Send persistent failures to a dead-letter queue, alert on them and provide a way to replay once the cause is fixed.

How much do API integration services cost?

It depends on scope, so we do not publish fixed prices. The main drivers are the number of applications, API complexity, number of endpoints, data transformation, authentication, custom business logic, security and testing needs, ongoing monitoring and legacy compatibility. A scoped estimate through our contact page is the reliable way to get a number.

Can APIs connect legacy applications with modern systems?

Yes, though the method varies. If the legacy system has no API, we can often add a facade layer that talks to it through its database, files or older protocols and exposes a modern interface. This also supports gradual modernization, because callers use the facade while the system behind it is replaced step by step.

How long does API integration take?

A simple connection between two well-documented APIs can take a matter of weeks, while a multi-system project with legacy components, strict security needs and extensive testing can take several months. Discovery and API assessment give the most accurate timeline. The biggest delays usually come from unclear requirements, missing sandboxes and undocumented systems.

How do I choose an API integration services provider?

Look for real experience with APIs and architecture, and ask how they handle failure: retries, idempotency, monitoring and replay. Check their security practices, testing approach and documentation habits, and ask for examples involving legacy systems if you have any. Prefer a provider who will tell you when a simple connector is enough.

Rajesh Dhiman

Written by

Rajesh Dhiman

Founder & CTO, Eunix Tech

Rajesh leads Eunix Tech's engineering practice, building production-grade applications, AI systems, and platform modernizations for global clients. He writes about the practical side of shipping software: what works in production, what fails, and why.

Turn Your Wasted Investment into a Competitive Advantage

Stop guessing what went wrong. Let our experts run a full AI Autopsy on your project. On our 15-minute strategy call, we'll give you a clear, actionable plan to fix your system and deliver the ROI you were promised.

Related Articles

Legacy Application Modernization: How to Upgrade Outdated Software Without a Full Rewrite

Most legacy systems do not need a ground-up rewrite. Here is how to modernize them in phases: assess first, wrap with APIs, replace components gradually, and know when a rewrite is the right call.

AI Software Development Services: From Business Idea to Production Application

What AI software development services include, which types of AI software you can build, and a practical framework for taking an idea to production, from testing and security to cost drivers and choosing a partner.

AI Integration With CRM, GPT and SQL Server: How to Connect AI to the Systems You Already Run

A practical guide to connecting AI with your CRM, GPT-style LLM APIs and SQL Server, including safe natural-language queries, AI-ready data and how to scope the work.

AI-Powered Data Analytics: How Businesses Can Use AI to Find Insights Faster

AI data analytics helps teams spot patterns, ask questions in plain language and automate reporting. Here is how it works, where it fails, and how to measure the return.

🚀 Need your AI MVP ready for launch? Book a free 15-minute call.