Computer networks are imperfect and, occasionally, an HTTP request might be interrupted during transmission and no response will be delivered to the client program. Typically, you will receive an error from your HTTP request library when this happens.
As you cannot be certain whether the request succeeded or failed before the communication was interrupted, you must repeat the request using the same idempotency key. In this way, the investment API can recognise that it is a duplicate of the previous request and handle it accordingly. This ability to achieve the same, intended results, no matter how often the request is repeated is called "Idempotency".
To make our API idempotent, we require you to use "idempotency keys". If your request contains the same idempotency key as a previous request, that has been successfully handled, the Investment API will know not to repeat the work, but rather to repeat the successful response to the request.
Provide an idempotency-key
HTTP header with the request. This header must have a randomly generated UUID as its value.
Example idempotency key
idempotency-key: ccb07f42-4104-44ad-8e1f-c660bb7b269c
Generate a new and unique idempotency-key
value for each new request, but make sure that in case you need to retry a previous request, you use the same idempotency-key
value as for the repeated request.
Repeat attempts are recognised as idempotent during a time window of at least 24 hours.
The following POST requests require idempotency keys; sending idempotent keys for other endpoints or HTTP methods has no effect:
- Create an account group
- Create an account
- Trigger a direct debit
- Create a fee collection
- Create account liquidation request
- Create a mandate
- Place an order
- Trigger portfolio rebalancing
- Create portfolios allocation
- Create portfolios configuration
- Create portfolios order
- Create a reference account
- Create savings plan
- Create a tax exemption
- Update tax residencies
- Create a tax wrapper for ISA account
- Trigger a bank transaction
- Trigger a top-up
- Create a user
- Create a virtual bank account
- Trigger a virtual cash decrease
- Trigger a virtual cash increase
- Trigger a withdrawal