Appnigma
SDKReference

Last updated on October 23, 2026

Retries and time limits

Which calls are tried again, how long the SDK waits between tries, and how long one attempt may take.

When a call is tried again

A call is tried again only when trying again is safe: the API could not be reached, it answered with a server error (5xx), or it said to slow down (429). A 400, 401, 403, 404, 409 or 410 is never tried again, because the same call would be refused the same way. By default a call is made up to three times.

Calls that are never tried again

These are made once:

CallWhy
connections.createLinkEvery call makes a new link. A repeat after a lost answer would leave a working link nobody saw.
runIt is your own function, and only you know whether running it twice is harmless.
actions.run (TypeScript only)Made once, the same as run.
request with any method other than GETOnly you know whether repeating it is harmless.

If one of these fails, decide in your code whether to call again.

The wait between tries

The SDK waits as long as the server's Retry-After header says, when it sent one. Otherwise it waits half a second, then a second, with a little random spread so many clients do not try again in the same instant.

A Retry-After longer than the longest wait you allow is not waited for. The call fails at once with a rate limit error that carries the wait, so your code decides what to do with half a minute rather than sitting through it. That limit is the maxRetryWaitMs setting, max_retry_wait_ms in Ruby and Python.

Time limits

Every attempt has a time limit, 30 seconds by default. An attempt that runs out of time counts as a network failure and is tried again like one.

Each call can set its own limit. In TypeScript a call can also be cancelled with an AbortSignal. A cancel stops the call at once and is never tried again.

const controller = new AbortController();
setTimeout(() => controller.abort(), 5000);
const page = await appnigma.pull(
  { endCustomerId: "lawfirm-123", platform: "hubspot", object: "contact", limit: 1 },
  { timeoutMs: 10_000, signal: controller.signal },
);
console.log("one record:", page.records.length);
page = client.pull(end_customer_id: "lawfirm-123", platform: "hubspot", object: "contact", limit: 1, timeout_ms: 10_000)
puts "one record: #{page[:records].size}"
page = client.pull(end_customer_id="lawfirm-123", platform="hubspot", object="contact", limit=1, timeout_ms=10_000)
print("one record:", len(page["records"]))

On this page