shotkiln-com Og API
The Og API from shotkiln-com — 2 operation(s) for og.
The Og API from shotkiln-com — 2 operation(s) for og.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/shotkiln-com:shotkiln-com-og-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Shotkiln Og API
version: 0.1.0
description: 'Screenshots, PDFs and OG images from any public URL or HTML. Plans: Free 100/mo, Starter 2000/mo, Pro 10000/mo, Scale 50000/mo.'
contact:
name: Shotkiln support
email: support@shotkiln.com
servers:
- url: https://shotkiln.com
security:
- ApiKeyHeader: []
- Bearer: []
- {}
tags:
- name: Og
paths:
/v1/og:
get:
operationId: ogImageGet
summary: Generate a 1200x630 Open Graph PNG (query parameters; for og:image tags use a…
parameters:
- name: title
in: query
required: true
schema:
type: string
maxLength: 200
- name: subtitle
in: query
required: false
schema:
type: string
maxLength: 300
- name: template
in: query
required: false
schema:
type: string
enum:
- default
- gradient
- split
default: default
- name: theme
in: query
required: false
schema:
type: string
enum:
- light
- dark
default: dark
- name: accent
in: query
required: false
schema:
type: string
pattern: ^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$
default: '#ff5a1f'
- name: site
in: query
required: false
schema:
type: string
maxLength: 60
- name: cache_ttl
in: query
required: false
schema:
type: integer
minimum: 0
maximum: 2592000
default: 604800
- name: kid
in: query
required: false
schema:
type: string
pattern: ^kid_[0-9A-Za-z]{16}$
description: 'Signed URLs: the key id from POST /v1/keys/signing-secret'
- name: exp
in: query
required: false
schema:
type: integer
description: 'Signed URLs: optional expiry, Unix seconds'
- name: sig
in: query
required: false
schema:
type: string
pattern: ^[0-9a-f]{64}$
description: 'Signed URLs: hex HMAC-SHA256 of "/v1/og?" + the other parameters sorted and percent-encoded, keyed with the signing secret'
responses:
'200':
description: Rendered file
content:
image/png: {}
headers:
X-Cache:
schema:
type: string
enum:
- HIT
- MISS
- BYPASS
X-Quota-Remaining:
schema:
type: integer
X-RateLimit-Remaining:
schema:
type: integer
'400':
description: 'Invalid parameter or blocked URL (code: invalid_parameter, invalid_url, url_blocked, blocked_url)'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Invalid or revoked API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: invalid_signature or signature_expired
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'413':
description: Target page too large
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit, daily limit or monthly quota exceeded (see Retry-After)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'502':
description: Target page failed to load
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Browser capacity temporarily unavailable (see Retry-After)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'504':
description: Render timed out
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Og
post:
operationId: ogImage
summary: Generate a 1200x630 Open Graph PNG
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
maxLength: 200
subtitle:
type: string
maxLength: 300
template:
type: string
enum:
- default
- gradient
- split
default: default
theme:
type: string
enum:
- light
- dark
default: dark
accent:
type: string
pattern: ^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$
default: '#ff5a1f'
site:
type: string
maxLength: 60
cache_ttl:
type: integer
minimum: 0
maximum: 2592000
default: 604800
required:
- title
responses:
'200':
description: Rendered file
content:
image/png: {}
headers:
X-Cache:
schema:
type: string
enum:
- HIT
- MISS
- BYPASS
X-Quota-Remaining:
schema:
type: integer
X-RateLimit-Remaining:
schema:
type: integer
'400':
description: 'Invalid parameter or blocked URL (code: invalid_parameter, invalid_url, url_blocked, blocked_url)'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Invalid or revoked API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'413':
description: Target page too large
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit, daily limit or monthly quota exceeded (see Retry-After)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'502':
description: Target page failed to load
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Browser capacity temporarily unavailable (see Retry-After)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'504':
description: Render timed out
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Og
/v1/og/sign:
post:
security:
- ApiKeyHeader: []
- Bearer: []
operationId: signOgUrl
summary: 'Return a signed /v1/og URL for the given card parameters (optional exp: Unix…'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
maxLength: 200
subtitle:
type: string
maxLength: 300
template:
type: string
enum:
- default
- gradient
- split
default: default
theme:
type: string
enum:
- light
- dark
default: dark
accent:
type: string
pattern: ^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$
default: '#ff5a1f'
site:
type: string
maxLength: 60
cache_ttl:
type: integer
minimum: 0
maximum: 2592000
default: 604800
exp:
type: integer
required:
- title
responses:
'200':
description: '{ url, kid, watermark }'
content:
application/json: {}
'400':
description: 'Invalid parameter or blocked URL (code: invalid_parameter, invalid_url, url_blocked, blocked_url)'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Invalid or revoked API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Og
components:
schemas:
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
required:
- code
- message
securitySchemes:
ApiKeyHeader:
type: apiKey
in: header
name: x-api-key
Bearer:
type: http
scheme: bearer