Skip to content
JamFrame
Docs menu

Quick start: make your first file

Create a template, see which parts can change, make a test render in the app, then make the same image with one API call. About ten minutes.

In this guide you create a template, change its headline, and make an image. First you do it in the app, then with one API call. You need a JamFrame account. If you don’t have one yet, sign up for free.

1. Create a template

  1. In the sidebar, click Templates.
  2. Click New Design.
  3. Pick a size, for example an Instagram square post.
  4. Leave Starter layout selected. It gives you a photo, a headline and a subline that are ready to change.
  5. Click Create design. The editor opens.

2. See what can change

  1. On the canvas, click the headline.
  2. In the properties panel, find API parameter. Let the render API change this layer is already turned on, and the Key is headline.
  3. Click Save in the top bar.

The starter layout has three of these dynamic fields: photo, headline and subline. A key is the name you use when you send a new value. To make your own fields, see Choose what changes.

3. Make a test render

  1. In the top bar, click Integrations, API & Forms.

  2. Stay on the REST API Integration tab. API parameters lists the keys of the template.

  3. In the Test render panel, find Modifications (JSON). Change the headline, for example:

    {
      "headline": "Summer sale: 30% off"
    }
  4. Leave Format on PNG and click Test render.

The image shows up in a few seconds. This test render used one credit. You can see it on the Renders page.

4. Create an API key

  1. In the sidebar, under Developers, click API Keys.
  2. Click New API key, type a name such as “My first key”, and click Create key.
  3. Click Copy, keep the key somewhere safe, then click I’ve saved this — close.

5. Make the image with the API

Go back to the template and open Integrations, API & Forms again. Example request has a ready-made request with your template’s id. It looks like this:

curl https://api.jamframe.com/v1/render \
  -H "Authorization: Bearer $JAMFRAME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "templateId": "YOUR_TEMPLATE_ID",
    "modifications": {
      "headline": "Summer sale: 30% off",
      "subline": "This weekend only"
    },
    "response": { "format": "png" }
  }'
const res = await fetch("https://api.jamframe.com/v1/render", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.JAMFRAME_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    templateId: "YOUR_TEMPLATE_ID",
    modifications: {
      headline: "Summer sale: 30% off",
      subline: "This weekend only",
    },
    response: { format: "png" },
  }),
});
const { data } = await res.json();
console.log(data.content); // the link to your image
import os
import requests

res = requests.post(
    "https://api.jamframe.com/v1/render",
    headers={"Authorization": f"Bearer {os.environ['JAMFRAME_API_KEY']}"},
    json={
        "templateId": "YOUR_TEMPLATE_ID",
        "modifications": {
            "headline": "Summer sale: 30% off",
            "subline": "This weekend only",
        },
        "response": {"format": "png"},
    },
)
print(res.json()["data"]["content"])  # the link to your image

The answer has a link to your image in data.content:

{
  "data": {
    "content": "https://cdn.jamframe.com/renders/…/5f0c6b0e.png?Expires=…",
    "expiresAt": "2026-11-09T12:05:00.000Z",
    "type": "url",
    "format": "png",
    "pages": [1],
    "credits": 1,
    "renderId": "clx8n0q1r0004abcd1234efgh",
    "responseTime": 1840
  }
}

The link works for 5 minutes, so download the file or use it soon. To keep links longer, see Render images and PDFs.

What next

Last updated

Still stuck?

Email [email protected] and a real person will reply. Tell us the template you were using and what you expected to happen.