> For the complete documentation index, see [llms.txt](https://docs.udara360.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.udara360.io/udara360-docs-1/getting-started/idempotency.md).

# Idempotency

Every request that creates or modifies data on the Udara360 API must include a unique request reference in the header. This is called idempotency, and it exists to prevent the same request from being processed more than once.

## How It Works

Include a unique reference in the header of every request that creates or modifies data:

```
Request-reference: {unique_reference}
```

Replace `{unique_reference}` with a unique string you generate for each request. The maximum length is 100 characters.

## What Makes a Good Unique Reference

Your unique reference can be any combination of letters, numbers, or symbols — as long as no two requests ever share the same value. A common approach is to combine the date, time, and transaction type:

```
Request-reference: TXN-20250115-093045-TRANSFER
Request-reference: ACC-20250115-094500-CREATEACCOUNT
Request-reference: LN-20250115-110000-DISBURSE
```

## Which Requests Require This Header

Any request that uses these methods requires the idempotency header:

| Method | Requires Idempotency Header  |
| ------ | ---------------------------- |
| POST   | Yes - creates new data       |
| PUT    | Yes - modifies existing data |
| GET    | No - only reads data         |
| DELETE | Yes - removes data           |

{% hint style="info" %}
:warning:**Important:** Never reuse a request reference across different requests. Each request must have its own unique reference. Reusing references may cause legitimate requests to be rejected as duplicates.
{% endhint %}

{% hint style="info" %}
:bulb:**Tip:** Generate your unique reference on your server side, never on the client side. This ensures the reference is truly unique and cannot be tampered with.
{% endhint %}
