# Node.js

> Get started with Orshot Node SDK

- **URL**: https://orshot.com/docs/sdks/node

---

## Installation```bash tab="npm"
npm install --save orshot
``````bash tab="yarn"
yarn add orshot
``````bash tab="pnpm"
pnpm install orshot
```## Import```js
import { Orshot } from "orshot";
```## Initialise```js
const orshot = new Orshot(<ORSHOT_API_KEY>);
```## Render from a template

## Generate a Signed URL```js
const response = await orshot.generateSignedUrl({
  templateId,
  modifications,
  expiresAt: 1744276943,
  renderType: "images",
  responseFormat: "png",
});
```</Tab>```js
{
  data: "https://api.orshot.com/v1/generate/images?expiresAt=never&fullCapture=false&height=1000&id=20&templateId=website-screenshot...."
}
```</Tab>
</Tabs>

## Examples

#### `base64` response format```js
import { Orshot } from "orshot";
const orshot = new Orshot("<ORSHOT_API_KEY>");
let templateId = "open-graph-image-1";
let modifications = {
  title: "Orshot",
  description: "Create Visuals and Automate Image Generation",
  textColor: "",
  backgroundImageUrl: "",
  backgroundColor: "",
};
const response = await orshot.renderFromTemplate({
  templateId,
  modifications,
  responseType: "base64",
  responseFormat: "png",
});

````

</Tab>```js
{
  data: {
    content: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAJ2CAYAAABPQHtcAAAAAXNSR0IArs4c6QAAIABJREFUeJzs3XmYJXdZL/Bvna37dM90FghLCBAQkC1BCBAMShLFBJAgKnofroBeFUUF5LrhiihXcV8BQRYVUUAlIewIGPbFmLCFLWwCYZEtzPR+trp/TM/......',
    format: 'png',
    type: 'base64',
    responseTime: 3375.72
  }
}
````

  </Tab>
</Tabs>

#### `url` response format```js
import { Orshot } from "orshot";
const orshot = new Orshot("<ORSHOT_API_KEY>");
let templateId = "open-graph-image-1";
let modifications = {
  title: "Orshot",
  description: "Create Visuals and Automate Image Generation",
  textColor: "",
  backgroundImageUrl: "",
  backgroundColor: "",
};
const response = await orshot.renderFromTemplate({
  templateId,
  modifications,
  responseType: "url",
  responseFormat: "png",
});

````
  </Tab>```js
{
  data: {
    content: 'https://storage.orshot.com/10631481-fd26-44ff-9a61-f52cdf1b8e62/images/r1wCliKXC2B.png',
    type: 'url',
    format: 'png',
    responseTime: 3550.43
  }
}

````

  </Tab>
</Tabs>

#### `binary` response format```js
import { Orshot } from "orshot";
import { createWriteStream } from "fs";

const orshot = new Orshot("<ORSHOT_API_KEY>");

let templateId = "open-graph-image-1";
let modifications = {
  title: "Orshot",
  description: "Create Visuals and Automate Image Generation",
  textColor: "",
  backgroundImageUrl: "",
  backgroundColor: "",
};

const response = await orshot.renderFromTemplate({
  templateId,
  modifications,
  responseType: "binary",
  responseFormat: "png",
});
const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);

createWriteStream("og.png").write(buffer);
```This example writes the binary image to the file `og.png` in the current directory.

## renderFromTemplate

Use this function to render an image/pdf. Render template takes in 4 options passed as an object```
{
  templateId,
  modifications,
  responseType,
  responseFormat
}
```| key              | required | description                                                                              |
| ---------------- | -------- | ---------------------------------------------------------------------------------------- |
| `templateId`     | Yes      | ID of the template (`open-graph-image-1`, `tweet-image-1`, `beautify-screenshot-1`, ...) |
| `modifications`  | Yes      | Modifications for the selected template.                                                 |
| `responseType`   | No       | `base64`, `binary`, `url` (Defaults to `base64`).                                        |
| `responseFormat` | No       | `png`, `webp`, `pdf`, `jpg`, `jpeg`, `avif` (Defaults to `png`).                         |

For available templates and their modifications refer [Orshot Templates Page](https://orshot.com/templates)

## generateSignedUrl

Use this function to generate signed URLs```
{
  templateId,
  modifications,
  renderType,
  responseFormat,
  expiresAt
}
```| key              | required | description                                                                              |
| ---------------- | -------- | ---------------------------------------------------------------------------------------- |
| `templateId`     | Yes      | ID of the template (`open-graph-image-1`, `tweet-image-1`, `beautify-screenshot-1`, ...) |
| `modifications`  | Yes      | Modifications for the selected template.                                                 |
| `expiresAt`      | Yes      | Expires at in unix timestamp (Number).                                                   |
| `renderType`     | No       | `images`, `pdfs` (Defaults to `images`).                                                 |
| `responseFormat` | No       | `png`, `webp`, `pdf`, `jpg`, `jpeg`, `avif` (Defaults to `png`).                         |