# Overview - Dynamic Images

![Dynamic image process overview](https://3568284716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHvY8mOYKzvcoxVpCu4FE%2Fuploads%2F8LK1CKTKYEQityQSSvIl%2Fdynamic-image-global-view.jpg?alt=media\&token=e9466bca-90fe-494f-80a2-26b5e556b2be)

**Dynamic Images** allow you to generate personalized images (based on any design) directly from a URL using `query parameters`.

{% hint style="danger" %}
These images are served via a public URL. To prevent URL flooding and protect your bandwidth, keep IP address limitations enabled in production, and only disable them when testing your integration.
{% endhint %}

### How to setup a dynamic image?

{% hint style="info" %}
A guide can be found here: <https://help.abyssale.com/en/articles/89577-creating-dynamic-images-on-abyssale-personalization-at-its-finest>
{% endhint %}

### How Credits and Bandwidth Are Counted

Each **unique Dynamic Image URL** counts as **1 API credit** the first time it is generated. Once created, the image is stored in cache for **1 year**, and all subsequent requests to the same URL will be served directly from this cache — no new credits are consumed.

However, every time the cached image is delivered, it counts toward your **bandwidth usage**, which is tracked and limited according to your account plan. This means the same image can be called thousands of times without additional credit costs, but it will still use bandwidth.
