# Signed URLs in PHP

> Generate a signed URL with the PHP SDK. The URL renders a template image when someone opens it.

Canonical: https://bannerify.co/docs/sdk/php/apis/signed-url

`generateImageSignedUrl` builds a link that renders an image when someone opens it. It makes no network request: the SDK signs the URL on your server with your API key.

## Request

<ParamField body="templateId" type="string" required>
  The template id, for example `tpl_xxx`.
</ParamField>

<ParamField body="modifications" type="array">
  The values to put into the template's layers. They travel in the URL, so keep them short. [Modifications](https://bannerify.co/docs/essentials/modifications) lists the fields each layer accepts.
</ParamField>

<ParamField body="format" type="string" default="png">
  The image format: `png`, `jpeg`, or `webp`. The method throws `InvalidArgumentException` for any other value.
</ParamField>

<ParamField body="nocache" type="bool" default="false">
  Skip the cache. Every request renders a new image and counts toward your quota.
</ParamField>

```php
$url = $client->generateImageSignedUrl('tpl_xxx', [
    'modifications' => [
        ['name' => 'headline', 'text' => 'Hello, Ada'],
    ],
    'format' => 'jpeg',
]);
```

## Response

The method returns a string:

```text
https://api.bannerify.co/v1/templates/signedurl?apiKeyHashed=2f5a...&format=jpeg&modifications=%5B...%5D&templateId=tpl_xxx&sign=ce2d...
```

`apiKeyHashed` tells Bannerify which key signed the URL. `sign` is an HMAC-SHA256 of the other parameters, keyed with your API key. Nobody can change the template or the modifications in a signed URL without breaking the signature, so you can put the URL in a page, an email, or a meta tag.

```php
echo '<img src="' . htmlspecialchars($url) . '" alt="Welcome banner">';
```

Bannerify caches the rendered image for up to 7 days. [Signed URLs](https://bannerify.co/docs/essentials/signed-urls) explains caching, quota, and limits.

## Related

- [Previous: Render videos in PHP](https://bannerify.co/docs/sdk/php/apis/render-video)
- [Next: Go SDK](https://bannerify.co/docs/sdk/go/overview)
- [Documentation index](https://bannerify.co/docs/llms.txt)
