# Ruby

> Get started with Orshot Ruby SDK

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

---

## Installation

Add this line to your application's Gemfile:```ruby
gem 'orshot'
```And then execute:```bash
$ bundle
```Or install it yourself as:```bash
$ gem install orshot
```## Initialise a client```ruby
require 'orshot'
client = Orshot::Client.new('<ORSHOT_API_KEY>')
```## Render from a template```ruby
response = client.render_from_template({
  'template_id' => 'open-graph-image-1',
  'modifications' => {'title': 'From ruby sdk new'},
  'response_type' => 'base64',
  'response_format' => 'png'
})
```## Generate a Signed URL```ruby
response = client.generate_signed_url({
  'template_id' => 'open-graph-image-1',
  'modifications' => {'title': 'From ruby sdk new'},
  'render_type' => 'images',
  'response_format' => 'png',
  'expires_at': 1744276943
})
```## Example

#### `base64` response format

<Tabs items=>
<Tab value="Request">```ruby
require 'orshot'
client = Orshot::Client.new('<ORSHOT_API_KEY>')
response = client.render_from_template({
  'template_id' => 'open-graph-image-1', 
  'modifications' => {'title': 'From ruby sdk new'}, 
  'response_type' => 'base64', 
  'response_format' => 'png'
})
```</Tab>
<Tab value="Response">```ruby
{
  "content"=> "data:image/png;base64,iVBORw0KGgoAA...", 
  "format"=> "png", 
  "type"=> "base64", 
  "responseTime"=> 3357.47
}
```</Tab>
</Tabs>

#### `binary` response format```ruby
require 'orshot'

client = Orshot::Client.new('<ORSHOT_API_KEY>')

File.open("og.png", "w") do |file|
  response = client.render_from_template({
    'template_id' => 'open-graph-image-1',
    'modifications' => {'title': 'From ruby sdk new'},
    'response_type' => 'binary',
    'response_format' => 'png'
  })
  file.binmode
  file.write(response)
end
```Data is written to the file `og.png`

#### `url` response format

<Tabs items=>
<Tab value="Request">```ruby
require 'orshot'
client = Orshot::Client.new('<ORSHOT_API_KEY>')
response = client.render_from_template({
  'template_id' => 'open-graph-image-1', 
  'modifications' => {'title': 'From ruby sdk new'}, 
  'response_type' => 'url', 
  'response_format' => 'png'
})
```</Tab>
<Tab value="Response">```ruby
{
  "content" => "https://storage.orshot.com/00632982-fd46-44ff-9a61-f52cdf1b8e62/images/nNSTZlMHFkr.png", 
  "type" => "url", 
  "format" => "png", 
  "responseTime" => 3950.87
}
```</Tab>
</Tabs>

## Signed URL

<Tabs items=>
<Tab value="Request">```ruby
require 'orshot'
client = Orshot::Client.new('<ORSHOT_API_KEY>')
response = client.generate_signed_url({
  'template_id' => 'open-graph-image-1', 
  'modifications' => {'title': 'From ruby sdk new'}, 
  'render_type' => 'images', 
  'response_format' => 'png', 
  'expires_at' => 1744276943
})
```</Tab>
<Tab value="Response">```ruby
{
  "url" => "https://api.orshot.com/v1/generate/images?expiresAt=1744276943&id=37&templateId=open-graph-image-1&title=From%20ruby%20sdk%20new&signature=1225f4b65dd19ce6ac6f03c5fq6e42cfb7e254fac26492b35d58e2e2d65c7021"
}
```</Tab>
</Tabs>

## render_from_template

Use this function to render an image/pdf. This method accepts a hash with the following keys

| key               | required | description                                                                              |
| ----------------- | -------- | ---------------------------------------------------------------------------------------- |
| `template_id`     | Yes      | ID of the template (`open-graph-image-1`, `tweet-image-1`, `beautify-screenshot-1`, ...) |
| `modifications`   | Yes      | Modifications for the selected template.                                                 |
| `response_type`   | No       | `base64`, `binary`, `url` (Defaults to `base64`).                                        |
| `response_format` | No       | `png`, `webp`, `pdf`, `jpg`, `jpeg`, `avif` (Defaults to `png`).                         |

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

## generate_signed_url

Use this function to generate signed URL. This method accepts a hash with the following keys

| key               | required | description                                                                              |
| ----------------- | -------- | ---------------------------------------------------------------------------------------- |
| `template_id`     | Yes      | ID of the template (`open-graph-image-1`, `tweet-image-1`, `beautify-screenshot-1`, ...) |
| `modifications`   | Yes      | Modifications for the selected template.                                                 |
| `expires_at`      | Yes      | Expires at in unix timestamp (Number).                                                   |
| `render_type`     | No       | `images`, `pdfs` (Defaults to `images`).                                                 |
| `response_format` | No       | `png`, `webp`, `pdf`, `jpg`, `jpeg`, `avif` (Defaults to `png`).                         |