> ## Documentation Index
> Fetch the complete documentation index at: https://docs.n8negri.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Generate your first render in under 5 minutes

## 1. Create an account

Sign up at [app.imtegrate.com](https://app.imtegrate.com/signup). You start on the free plan with 50 renders/month.

## 2. Create a template

In the dashboard:

1. Go to **Templates → New**.
2. Drop a background image and add a text layer.
3. Mark the text layer as **dynamic** with name `{{title}}`.
4. Publish the template.

Copy the **template ID** from the URL (`/templates/<id>`).

## 3. Get your API key

**Settings → API Keys → New key**. Copy the secret — shown only once.

<Warning>
  Treat API keys as secrets. Use server-side only. Never embed in client code.
</Warning>

## 4. Trigger a render

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.imtegrate.com/v1/images \
    -H "Authorization: Bearer $IMTEGRATE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "template_id": "tpl_abc123",
      "modifications": [
        { "name": "title", "text": "Hello, world" }
      ]
    }'
  ```

  ```typescript node theme={null}
  const res = await fetch("https://api.imtegrate.com/v1/images", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.IMTEGRATE_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      template_id: "tpl_abc123",
      modifications: [{ name: "title", text: "Hello, world" }],
    }),
  });
  const render = await res.json();
  console.log(render.id, render.status);
  ```

  ```python python theme={null}
  import os, requests

  r = requests.post(
      "https://api.imtegrate.com/v1/images",
      headers={"Authorization": f"Bearer {os.environ['IMTEGRATE_API_KEY']}"},
      json={
          "template_id": "tpl_abc123",
          "modifications": [{"name": "title", "text": "Hello, world"}],
      },
  )
  print(r.json())
  ```
</CodeGroup>

The response includes `id` and `status: "pending"`.

## 5. Retrieve the result

Renders are async. Two options to get the final URL:

**Poll:**

```bash theme={null}
curl https://api.imtegrate.com/v1/images/<render_id> \
  -H "Authorization: Bearer $IMTEGRATE_API_KEY"
```

When `status` is `completed`, `result_url` contains a signed URL valid for 1 hour.

**Webhook:** see [Webhooks guide](/guides/webhooks).

## Next steps

* [Video templates →](/guides/video-templates)
* [Dynamic photos with People →](/concepts/people)
* [Render in bulk with Collections →](/concepts/collections)
