Navigation

Go

Signed URLs in Go

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

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

It takes a template id and a *CreateImageOptions. A nil value uses the defaults.

#templateIDstringrequired

The template id, for example tpl_xxx.

#Modifications[]Modification

The values to put into the template’s layers. They travel in the URL, so keep them short. Modifications lists the fields each layer accepts.

#Formatstringdefault: png

The image format: png, jpeg, or webp. The method returns an error for any other value.

The Go SDK has no nocache option. Signed URLs shows how to skip the cache when you build the URL yourself.

signedURL, err := client.GenerateImageSignedURL("tpl_xxx", &bannerify.CreateImageOptions{
	Modifications: []bannerify.Modification{
		{Name: "headline", Text: ptr("Hello, Ada")},
	},
	Format: "jpeg",
})
if err != nil {
	return err
}

Response

The method returns the URL as a string:

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

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.

tag := fmt.Sprintf(`<img src="%s" alt="Welcome banner">`, html.EscapeString(signedURL))

Bannerify caches the rendered image for up to 7 days. Signed URLs explains caching, quota, and limits.