ToolCenter API Documentation

Welcome to the all-in-one developer toolkit. One API, unlimited tools.

Authentication

All API endpoints require authentication via the Authorization header:

Authorization: Bearer YOUR_API_KEY

Need an API key? Sign up for free at toolcenter.dev and get 100 API calls per month.

⚠️ Error Handling

All API errors return a consistent JSON format with an appropriate HTTP status code.

{
  "error": "Description of what went wrong",
  "code": "ERROR_CODE"
}

HTTP Status Codes

CodeMeaningDescription
200SuccessRequest completed successfully
400Bad RequestMissing or invalid parameters
401UnauthorizedMissing or invalid API key
422Validation ErrorParameters failed validation (e.g., invalid URL)
429Rate LimitedToo many requests — check your plan limits
500Server ErrorSomething went wrong on our end

Rate Limiting

Every response includes rate limit headers:

HeaderDescription
X-RateLimit-LimitYour plan's monthly request limit
X-RateLimit-RemainingRequests remaining this month
X-RateLimit-ResetUTC timestamp when limits reset

Common Error Examples

Missing API Key (401):

{ "error": "API key required. Pass it as Bearer token." }

Missing Required Parameter (400/422):

{ "error": "The url field is required." }

Rate Limit Exceeded (429):

{ "error": "Rate limit exceeded. Upgrade your plan for more requests." }

Base URL

Recommended (API subdomain):
https://api.toolcenter.dev/v1
Also supported:
https://api.toolcenter.dev/v1

Both URLs are fully equivalent. The API subdomain is recommended for cleaner URLs.

Rate Limits

Plan Monthly Limit Rate Limit
Free 100 calls 5 calls/minute
Starter 5,000 calls 30 calls/minute
Pro 50,000 calls 100 calls/minute

Error Codes

Code Description
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
403Forbidden - Plan limits exceeded
429Rate Limited - Too many requests
500Internal Error - Something went wrong
📦 Official SDKs available — Node.js, Python, and PHP
View SDKs →
📄 API Specs: OpenAPI 3.0 ↓ Postman Collection ↓

GET POST Screenshot API

Capture high-quality screenshots of any website, HTML, or Markdown. Supports 13 device presets, dark mode, ad/cookie blocking, element capture, geolocation spoofing, and more.

Endpoint

POST /api/v1/screenshot

Parameters

Name Type Required Description
urlstringYes*URL to screenshot (*required without html)
htmlstringNoRaw HTML content to render
widthintegerNoViewport width (320-3840, default: 1920)
heightintegerNoViewport height (240-2160, default: 1080)
formatstringNoOutput format: png, jpg, webp (default: png)
fullPagebooleanNoCapture full page height (default: false)
delayintegerNoWait time in ms before capture (0-10000)
selectorstringNoCSS selector to capture specific element
darkModebooleanNoEnable dark mode (default: false)
deviceScaleintegerNoDevice pixel ratio (1-3, default: 1)
blockAdsbooleanNoBlock advertisements (default: false)
customCssstringNoCustom CSS to inject
customJsstringNoCustom JavaScript to execute
blockCookieBannersbooleanNoRemove cookie consent banners (default: false)
blockChatWidgetsbooleanNoRemove chat widgets like Intercom, Drift (default: false)
userAgentstringNoCustom User-Agent string
headersobjectNoCustom HTTP headers as key-value pairs
authenticationobjectNoHTTP Basic Auth: {username, password}
emulateDevicestringNoDevice emulation: iPhone 12, iPhone 13, iPhone 14, iPhone 14 Pro, iPhone 15, iPhone 16, iPad, iPad Pro, Pixel 5, Pixel 7, Samsung Galaxy S23, MacBook Air, MacBook Pro
geolocationobjectNoSpoof geolocation: {latitude, longitude}
timezonestringNoTimezone override (e.g. America/New_York)
languagestringNoBrowser language (e.g. en-US, es-ES)
qualityintegerNoJPEG/WebP quality (1-100, default: 80)
omitBackgroundbooleanNoTransparent background for PNG (default: false)
clipobjectNoClip region: {x, y, width, height}
storebooleanNoStore result and return URL instead of binary (default: false)
markdownstringNoMarkdown content to render (alternative to url/html)
reducedMotionbooleanNoEmulate prefers-reduced-motion (default: false)
response_typestringNoResponse format: json or binary (default: binary)
webhook_urlstringNoURL to receive async webhook when capture completes

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/screenshot" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "width": 1920,
    "height": 1080,
    "format": "png",
    "fullPage": false
  }'

Response

Returns the screenshot as binary image data with appropriate content-type header.

Content-Type: image/png
X-Cache: MISS
X-Render-Time: 1250ms
X-Usage: 45/100

GET POST PDF API

Generate PDFs from any URL, HTML, or Markdown with headers/footers, page ranges, device emulation, ad blocking, custom CSS/JS, and more. Returns page count and file size metadata.

Endpoint

POST /api/v1/pdf

Parameters

Name Type Required Description
urlstringYes*URL to convert to PDF (*required without html/markdown)
htmlstringNoRaw HTML content to convert
markdownstringNoMarkdown content (rendered with styled typography)
landscapebooleanNoLandscape orientation (default: false)
printBackgroundbooleanNoInclude background graphics (default: true)
formatstringNoPaper format: A4, A3, A5, Letter, Legal, Tabloid (default: A4)
marginobjectNoPage margins: {top, right, bottom, left} (e.g. "1cm", "20px")
scalenumberNoScale of the webpage rendering, 0.1 to 2.0 (default: 1)
pageRangesstringNoPages to print, e.g. "1-3", "1,3,5-7"
headerTemplatestringNoHTML template for page header. Use classes: date, title, url, pageNumber, totalPages
footerTemplatestringNoHTML template for page footer. Same classes as header
displayHeaderFooterbooleanNoShow header and footer (default: false)
preferCSSPageSizebooleanNoUse CSS @page size instead of format param (default: false)
fitOnePagebooleanNoFit entire page content on a single PDF page (default: false)
taggedbooleanNoGenerate tagged (accessible) PDF (default: false)
widthstringNoCustom page width (e.g. "800px", "10in")
heightstringNoCustom page height (e.g. "600px", "8in")
delayintegerNoWait time in ms before generating PDF (0-10000, default: 0)
darkModebooleanNoEmulate dark color scheme (default: false)
blockAdsbooleanNoHide advertisements (default: false)
blockCookieBannersbooleanNoHide cookie consent banners (default: false)
blockChatWidgetsbooleanNoHide live chat widgets (default: false)
customCssstringNoCustom CSS to inject before rendering
customJsstringNoCustom JavaScript to execute before rendering
authenticationobjectNoHTTP Basic Auth: {username, password}
headersobjectNoCustom HTTP headers as key-value pairs
emulateDevicestringNoDevice emulation: iPhone 12-16, iPad, Pixel 5/7, MacBook Air/Pro, etc.
timezonestringNoTimezone for page rendering (e.g. America/New_York)
languagestringNoAccept-Language header (e.g. "en-US", "fr-FR")
storebooleanNoStore result and return URL instead of binary (default: false)
response_typestringNoResponse format: json (base64 + metadata) or binary (default: binary)
webhook_urlstringNoURL to receive webhook when processing completes

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/pdf" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "A4",
    "landscape": false,
    "printBackground": true
  }' \
  --output document.pdf

GET POST QR Code API

Generate customizable QR codes with logos, colors, and multiple formats.

Endpoint

POST /api/v1/qr

Parameters

Name Type Required Description
textstringYesText or data to encode (max 4000 chars)
sizeintegerNoQR code size in pixels (100-2000, default: 300)
formatstringNoOutput format: png, svg (default: png)
colorstringNoForeground color (hex, default: #000000)
bgColorstringNoBackground color (hex, default: #ffffff)
logostringNoURL of logo image to embed

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/qr" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "https://toolcenter.dev",
    "size": 300,
    "format": "png",
    "color": "#000000",
    "bgColor": "#ffffff"
  }' \
  --output qrcode.png

GET POST Metadata API

Extract metadata, Open Graph data, and structured information from any URL.

Endpoint

POST /api/v1/metadata

Parameters

Name Type Required Description
urlstringYesURL to extract metadata from

Example Response

{
  "title": "Example Domain",
  "description": "This domain is for use in illustrative examples",
  "url": "https://example.com",
  "image": "https://example.com/image.jpg",
  "siteName": "Example",
  "type": "website",
  "locale": "en_US"
}

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/metadata" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://github.com"}'

POST Bulk Operations

Process multiple requests in a single API call for better efficiency.

Available Endpoints

  • POST /api/v1/bulk/screenshot - Bulk screenshots (max 20)
  • POST /api/v1/bulk/pdf - Bulk PDFs (max 20)
  • POST /api/v1/bulk/metadata - Bulk metadata extraction (max 20)

Example Request

{
  "requests": [
    {
      "url": "https://example1.com",
      "width": 1920,
      "height": 1080
    },
    {
      "url": "https://example2.com",
      "width": 1200,
      "height": 800
    }
  ]
}

GET Usage API

Check your current API usage and quota limits.

Endpoint

GET /api/v1/usage

Example Response

{
  "plan": "starter",
  "used": 245,
  "limit": 5000,
  "resets_at": "2024-03-01T00:00:00Z"
}

Code Examples

curl "https://api.toolcenter.dev/v1/usage" \
  -H "Authorization: Bearer YOUR_API_KEY" 

Signed URLs

Generate pre-signed URLs that can be shared publicly without exposing your API key. Perfect for embedding screenshots in emails, sharing links with clients, or using in frontend applications.

Supported tools: screenshot, pdf, qr, og-image, metadata

Generate a Signed URL

POST /api/v1/signed-url
Parameter Type Required Description
toolstringYesAPI tool to use: screenshot, pdf, qr, og-image, or metadata
paramsobjectYesParameters to pass to the tool (e.g. url, format, width)
expires_inintegerNoSeconds until the URL expires (60–2592000). Default: 86400 (24h)
curl -X POST "https://api.toolcenter.dev/v1/signed-url" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "screenshot",
    "params": {
      "url": "https://example.com",
      "format": "png",
      "width": 1280
    },
    "expires_in": 3600
  }'

Response

{
  "signed_url": "https://toolcenter.dev/api/v1/signed/screenshot?url=https%3A%2F%2Fexample.com&format=png&width=1280&exp=1709312400&kid=5&sig=a1b2c3d4...",
  "expires_at": "2026-03-01T12:00:00+00:00",
  "expires_in": 3600
}

Using the Signed URL

The returned signed_url can be used directly by anyone — no API key needed. The signature and expiration are embedded in the URL parameters.

<!-- Embed directly in HTML -->
<img src="https://toolcenter.dev/api/v1/signed/screenshot?url=..." alt="Screenshot">

<!-- Or link to a PDF -->
<a href="https://toolcenter.dev/api/v1/signed/pdf?url=...">Download PDF</a>

Note: Each signed URL counts as one API request when accessed. The URL stops working after the expires_at time.

Schedules

Automate recurring API tasks. Create scheduled jobs that run at fixed intervals — perfect for monitoring, automated reports, and periodic screenshots.

Schedule limits depend on your plan. Free plans have limited schedules; paid plans unlock more. Check your plan details for the exact limit.

Create a Schedule

POST /api/v1/schedules
Parameter Type Required Description
toolstringYesAPI tool: screenshot, pdf, qr, og-image, or metadata
paramsobjectYesParameters to pass to the tool on each run
intervalstringYesRun frequency: hourly, every_6h, every_12h, daily, or weekly
webhook_urlstringNoURL to receive results when each scheduled run completes
# Create a daily screenshot schedule
curl -X POST "https://api.toolcenter.dev/v1/schedules" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "screenshot",
    "params": {
      "url": "https://example.com",
      "format": "png",
      "width": 1920,
      "fullPage": true
    },
    "interval": "daily",
    "webhook_url": "https://your-app.com/webhook"
  }'

Create Response

{
  "message": "Schedule created successfully",
  "schedule": {
    "id": 12,
    "tool": "screenshot",
    "params": {
      "url": "https://example.com",
      "format": "png",
      "width": 1920,
      "fullPage": true
    },
    "cron_expression": "0 0 * * *",
    "is_active": true,
    "webhook_url": "https://your-app.com/webhook",
    "last_run_at": null,
    "next_run_at": "2026-03-02T00:00:00+00:00",
    "created_at": "2026-03-01T12:00:00+00:00"
  }
}

List Schedules

GET /api/v1/schedules
curl "https://api.toolcenter.dev/v1/schedules" \
  -H "Authorization: Bearer YOUR_API_KEY"

Get Schedule Details

GET /api/v1/schedules/{id}
curl "https://api.toolcenter.dev/v1/schedules/12" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update a Schedule

PATCH /api/v1/schedules/{id}
Parameter Type Description
is_activebooleanEnable or disable the schedule
intervalstringChange frequency: hourly, every_6h, every_12h, daily, weekly
webhook_urlstringUpdate the webhook destination URL
paramsobjectUpdate the tool parameters
# Pause a schedule
curl -X PATCH "https://api.toolcenter.dev/v1/schedules/12" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"is_active": false}'

# Change interval to hourly
curl -X PATCH "https://api.toolcenter.dev/v1/schedules/12" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"interval": "hourly"}'

Delete a Schedule

DELETE /api/v1/schedules/{id}
curl -X DELETE "https://api.toolcenter.dev/v1/schedules/12" \
  -H "Authorization: Bearer YOUR_API_KEY"

Interval mapping: hourly = every hour, every_6h = 4x daily, every_12h = 2x daily, daily = once per day at midnight UTC, weekly = every Monday at midnight UTC.

Job Status API

Check the status of asynchronous webhook jobs. When you send a request with a webhook_url, ToolCenter returns a job_id that you can poll for status updates.

Get Job Status

GET /api/v1/jobs/{id}
curl "https://api.toolcenter.dev/v1/jobs/abc123-def456" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response (Completed)

{
  "job_id": "abc123-def456",
  "tool": "screenshot",
  "status": "completed",
  "result_url": "https://toolcenter.dev/api/v1/storage/a1b2c3d4e5f6",
  "created_at": "2026-03-01T12:00:00+00:00",
  "completed_at": "2026-03-01T12:00:05+00:00"
}

Response (Failed)

{
  "job_id": "abc123-def456",
  "tool": "screenshot",
  "status": "failed",
  "error": "Target URL returned HTTP 500",
  "created_at": "2026-03-01T12:00:00+00:00",
  "completed_at": "2026-03-01T12:00:03+00:00"
}

Job Statuses

Status Description
pendingJob is queued and waiting to be processed
processingJob is currently being executed
completedJob finished successfully — result_url available
failedJob failed — error message available

Storage API

Retrieve stored files generated by API operations. When you use the store parameter or receive results from webhooks/schedules, files are stored temporarily and accessible via their unique hash.

Retrieve a Stored File

GET /api/v1/storage/{hash}

No authentication required. The hash itself serves as the access token. Only someone with the exact hash can retrieve the file.

# Download the stored file
curl -o screenshot.png "https://api.toolcenter.dev/v1/storage/a1b2c3d4e5f6"

# Or use in an img tag directly
# <img src="https://api.toolcenter.dev/v1/storage/a1b2c3d4e5f6" />

Response Headers

Header Description
Content-TypeMIME type of the stored file (e.g. image/png, application/pdf)
X-Expires-AtISO 8601 timestamp when the file will be deleted
Cache-Controlpublic, max-age=3600

Expiration: Stored files are temporary. After the expiration time, requesting the file returns 410 Gone. Download or cache files before they expire.

SDKs & Libraries

Official and community-maintained SDKs for your favorite programming languages.

JavaScript/Node.js

npm install toolcenter-js

Official TypeScript SDK with full type support.

Python

pip install toolcenter-python

Pythonic wrapper with async support.

PHP

composer require toolcenter/php-sdk

Laravel-friendly SDK with service providers.

Go

go get github.com/toolcenter/go-sdk

Lightweight Go client library.

Webhooks

Use webhooks for asynchronous processing of long-running operations.

How It Works

  1. Include webhook_url parameter in your API request
  2. Receive immediate response with job_id
  3. When processing completes, we'll POST results to your webhook URL

Webhook Payload

{
  "job_id": "abc123",
  "status": "completed",
  "type": "screenshot",
  "result_url": "https://toolcenter.dev/storage/screenshots/abc123.png",
  "created_at": "2024-01-15T10:30:00Z",
  "completed_at": "2024-01-15T10:30:05Z"
}

GET POST URL Shortener API

Shorten long URLs and track click analytics with custom short codes.

Endpoint

POST /api/v1/shorten

Parameters

Name Type Required Description
urlstringYesURL to shorten (max 2048 chars)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/shorten" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/very-long-url-that-needs-shortening"
  }'

Response

{
  "short_url": "https://toolcenter.dev/s/Abc123",
  "code": "Abc123",
  "original_url": "https://example.com/very-long-url-that-needs-shortening",
  "processing_time_ms": 45.2
}

GET POST Markdown to HTML API

Convert Markdown content to HTML with GitHub Flavored Markdown support.

Endpoint

POST /api/v1/markdown

Parameters

Name Type Required Description
markdownstringYesMarkdown content to convert (max 100000 chars)
options.gfmbooleanNoEnable GitHub Flavored Markdown (default: false)
options.sanitizebooleanNoSanitize HTML output (default: false)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/markdown" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "markdown": "# Hello World\n\nThis is **bold** text.",
    "options": {
      "gfm": true,
      "sanitize": false
    }
  }'

Response

{
  "html": "<h1>Hello World</h1>\n<p>This is <strong>bold</strong> text.</p>",
  "word_count": 6,
  "processing_time_ms": 12.4
}

GET POST Minify API

Minify HTML, CSS, or JavaScript code to reduce file size and improve performance.

Endpoint

POST /api/v1/minify

Parameters

Name Type Required Description
contentstringYesCode content to minify (max 1000000 chars)
typestringYesContent type: html, css, or js

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/minify" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "body {    margin: 0;    padding: 20px;  }",
    "type": "css"
  }'

Response

{
  "minified": "body{margin:0;padding:20px}",
  "original_size": 41,
  "minified_size": 25,
  "savings_percent": 39.0,
  "processing_time_ms": 8.3
}

GET POST Base64 API

Encode and decode content using Base64 encoding from text or URLs.

Endpoint

POST /api/v1/base64

Parameters

Name Type Required Description
actionstringYesAction to perform: encode or decode
contentstringNo*Text content (*required without url, max 10MB)
urlstringNo*URL to fetch content (*required without content)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/base64" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "encode",
    "content": "Hello World!"
  }'

Response

{
  "result": "SGVsbG8gV29ybGQh",
  "action": "encode",
  "processing_time_ms": 3.2
}

GET POST Hash Generator API

Generate cryptographic hashes using various algorithms (MD5, SHA1, SHA256, etc.).

Endpoint

POST /api/v1/hash

Parameters

Name Type Required Description
contentstringYesContent to hash (max 10MB)
algorithmsarrayNoHash algorithms: md5, sha1, sha256, sha384, sha512, crc32 (default: md5, sha256)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/hash" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Hello World!",
    "algorithms": ["md5", "sha256"]
  }'

Response

{
  "hashes": {
    "md5": "ed076287532e86365e841e92bfc50d8c",
    "sha256": "7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069"
  },
  "processing_time_ms": 5.1
}

GET POST JSON Validator API

Validate, format, and minify JSON content with detailed error reporting.

Endpoint

POST /api/v1/json

Parameters

Name Type Required Description
contentstringYesJSON content to process (max 10MB)
actionstringNoAction: validate, format, or minify (default: validate)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "{\"name\": \"John\", \"age\": 30}",
    "action": "format"
  }'

Response

{
  "valid": true,
  "result": "{\n  \"name\": \"John\",\n  \"age\": 30\n}",
  "action": "format",
  "processing_time_ms": 4.7
}

GET POST Mock Data API

Generate realistic fake JSON datasets from a schema. Ideal for frontend mocks, QA automation, demos, and load testing.

Endpoint

POST /api/v1/mock-data

Parameters

Name Type Required Description
schemaobjectYesField map. Example: {"id":"uuid","email":"email","role":{"type":"enum","values":["admin","user"]}}
countintegerNoRows to generate (1-1000). Default: 10
localestringNoFaker locale (e.g. en_US, es_ES)
seedintegerNoDeterministic output for reproducible tests

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/mock-data"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{
    "count": 3,
    "seed": 42,
    "schema": {
      "id": "uuid",
      "name": "fullName",
      "email": "email",
      "role": {"type":"enum","values":["admin","user"]},
      "signup_date": {"type":"date","params":["Y-m-d"]}
    }
  }'

Response

{
  "status": "success",
  "count": 2,
  "locale": "en_US",
  "seed": 99,
  "data": [
    {"id": "...", "username": "alice92", "password": "..."},
    {"id": "...", "username": "bob_dev", "password": "..."}
  ]
}

GET POST Cron Parser API

Parse cron expressions with timezone support, aliases (@daily, @weekly), month/day names (JAN-DEC, MON-SUN), field breakdown, and frequency estimation.

Endpoint

POST /api/v1/cron

Parameters

Name Type Required Description
expressionstringYesCron expression (5 fields) or alias: @yearly, @monthly, @weekly, @daily, @hourly. Supports month names (JAN-DEC) and day names (MON-SUN)
num_nextintegerNoNumber of next run dates to calculate (1-100, default: 5)
timezonestringNoIANA timezone for next run calculation (e.g. America/New_York, Europe/London). Default: UTC
fromstringNoCalculate next runs starting from this datetime (ISO 8601 format)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/cron" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "expression": "0 9 * * MON",
    "timezone": "America/New_York",
    "num_next": 5
  }'

Response

{
  "expression": "0 9 * * 1",
  "is_valid": true,
  "description": "At 09:00, on Monday",
  "timezone": "America/New_York",
  "next_runs": [
    "2026-03-02T09:00:00-05:00",
    "2026-03-09T09:00:00-05:00",
    "2026-03-16T09:00:00-04:00"
  ],
  "fields": {
    "minute": { "expression": "0", "values": [0] },
    "hour": { "expression": "9", "values": [9] },
    "day_of_month": { "expression": "*", "values": [1,2,...,31] },
    "month": { "expression": "*", "values": [1,2,...,12] },
    "day_of_week": { "expression": "1", "values": [1] }
  },
  "frequency": {
    "estimated_per_day": 1,
    "estimated_per_month": 4,
    "estimated_per_year": 52,
    "description": "About once per day"
  },
  "processing_time_ms": 2.4
}

GET POST Email Validation API

Validate email addresses with syntax, domain, and deliverability checks.

Endpoint

POST /api/v1/email-validate

Parameters

Name Type Required Description
emailstringYesEmail address to validate

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/email-validate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]"
  }'

Response

{
  "email": "[email protected]",
  "valid": true,
  "domain": "example.com",
  "domain_valid": true,
  "processing_time_ms": 15.3
}

GET POST IP Geolocation API

Get geolocation information for any IP address including country, city, and ISP details.

Endpoint

GET /api/v1/geoip

Parameters

Name Type Required Description
ipstringNoIP address to lookup (defaults to requester's IP)

Code Examples

curl -X GET "https://api.toolcenter.dev/v1/geoip?ip=8.8.8.8" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "ip": "8.8.8.8",
  "country": "United States",
  "country_code": "US",
  "city": "Mountain View",
  "region": "California",
  "latitude": 37.4056,
  "longitude": -122.0775,
  "isp": "Google LLC",
  "processing_time_ms": 23.1
}

GET POST User Agent Parser API

Parse user agent strings to extract browser, OS, and device information.

Endpoint

GET /api/v1/user-agent

Parameters

Name Type Required Description
uastringNoUser agent string (defaults to requester's UA)

Code Examples

curl -X GET "https://api.toolcenter.dev/v1/user-agent" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

Response

{
  "browser": {
    "name": "Chrome",
    "version": "120.0.0.0"
  },
  "os": {
    "name": "Windows",
    "version": "10"
  },
  "device": {
    "type": "desktop"
  },
  "processing_time_ms": 7.4
}

GET POST UUID Generator API

Generate and parse UUIDs (v1, v4, v7). Batch generation up to 100, multiple output formats, timestamp extraction for time-based versions.

Endpoints

POST /api/v1/uuid         # Generate UUIDs
POST /api/v1/uuid/parse   # Parse & validate a UUID

Generate Parameters

Name Type Required Description
versionintegerNoUUID version: 1 (time-based), 4 (random), 7 (Unix epoch sortable). Default: 4
countintegerNoNumber of UUIDs to generate (1-100, default: 1)
formatstringNoOutput format: standard, compact (no dashes), urn (urn:uuid:...), braces ({...})
uppercasebooleanNoReturn uppercase UUIDs (default: false)

Parse Parameters

Name Type Required Description
uuidstringYesUUID to parse (accepts standard, compact, URN, or braces format)

Code Examples

# Generate 5 sortable UUIDs (v7)
curl -X POST "https://api.toolcenter.dev/v1/uuid" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"version": 7, "count": 5}'

# Parse a UUID
curl -X POST "https://api.toolcenter.dev/v1/uuid/parse" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"uuid": "019ca94c-9ce0-7b96-98d5-687b7fd6c6b6"}'

Response

{
  "success": true,
  "version": 7,
  "count": 1,
  "uuid": "019ca94c-9ce0-7b96-98d5-687b7fd6c6b6",
  "details": {
    "version": 7,
    "version_name": "Unix Epoch Time-based (sortable)",
    "variant": "RFC 4122 / RFC 9562",
    "timestamp": {
      "unix_ms": 1772366896352,
      "iso": "2026-03-01T12:08:16.352Z"
    }
  },
  "processing_time_ms": 0.02
}

GET POST Password Generator API

Generate cryptographically secure passwords with full control over character sets, length, strength requirements, and format. Includes memorable password mode and entropy-based strength analysis.

Endpoint

POST /api/v1/password

Parameters

Name Type Required Description
lengthintegerNoPassword length (4-256, default: 16)
countintegerNoNumber to generate (1-100, default: 1)
uppercasebooleanNoInclude A-Z (default: true)
lowercasebooleanNoInclude a-z (default: true)
numbersbooleanNoInclude 0-9 (default: true)
symbolsbooleanNoInclude symbols !@#$%^&* (default: true)
exclude_similarbooleanNoExclude similar chars i, l, 1, I, o, O, 0 (default: false)
exclude_ambiguousbooleanNoExclude ambiguous chars: backticks, brackets (default: false)
memorablebooleanNoWord-based human-readable password (default: false)
separatorstringNoWord separator for memorable passwords (default: -)
prefixstringNoFixed prefix to prepend (max 20 chars)
suffixstringNoFixed suffix to append (max 20 chars)
custom_charsetstringNoCustom character set (overrides all charset options)

Example

curl -X POST "https://api.toolcenter.dev/v1/password" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"length": 24, "exclude_similar": true, "count": 3}'

Response

{"success": true, "password": "Noble-Valor-87%",
  "strength": {"score": 4, "label": "Strong", "entropy_bits": 96.9,
    "crack_time": "23 billion years", "variety_score": "4/4"}}

GET POST Web Scraper API

Extract content from web pages using CSS selectors with support for JavaScript-rendered content.

Endpoint

POST /api/v1/scrape

Parameters

Name Type Required Description
urlstringYesURL to scrape content from
selectorstringNoCSS selector to extract specific elements
formatstringNoOutput format: text, html, or json (default: text)
wait_forstringNoCSS selector to wait for before scraping

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/scrape" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "selector": "h1",
    "format": "text"
  }'

Response

{
  "url": "https://example.com",
  "content": "Example Domain",
  "selector": "h1",
  "format": "text",
  "processing_time_ms": 234.5
}

GET POST Page Speed API

Analyze website performance and get detailed speed metrics and optimization recommendations.

Endpoint

POST /api/v1/pagespeed

Parameters

Name Type Required Description
urlstringYesURL to analyze for page speed

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/pagespeed" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com"
  }'

Response

{
  "url": "https://example.com",
  "metrics": {
    "load_time": 1.234,
    "page_size": 2048576,
    "requests_count": 23
  },
  "score": 85,
  "processing_time_ms": 3456.7
}

GET POST Responsive Preview API

Generate responsive design previews across 10 device presets (or custom viewports) with per-device screenshots, viewport meta detection, CSS breakpoint analysis, and performance timing.

Endpoint

POST /api/v1/responsive

Parameters

Name Type Required Description
urlstringYesURL to preview responsively
devicesarrayNoDevice presets: mobile, mobile-small, mobile-large, tablet, tablet-landscape, laptop, desktop, desktop-hd, desktop-2k, android. Or custom objects: [{width, height, scale, isMobile, label}]. Default: [mobile, tablet, desktop]
formatstringNoImage format: png, jpg, webp (default: png)
qualityintegerNoImage quality 1-100 (for jpg/webp)
fullPagebooleanNoCapture full page for each device (default: false)
darkModebooleanNoEmulate dark color scheme (default: false)
blockAdsbooleanNoHide advertisements (default: false)
blockCookieBannersbooleanNoHide cookie consent banners (default: false)
delayintegerNoWait time in ms before capturing (0-10000, default: 0)

Response

{
  "url": "https://example.com",
  "previews": {
    "mobile": "https://toolcenter.dev/storage/responsive/abc123-mobile.png",
    "tablet": "https://toolcenter.dev/storage/responsive/abc123-tablet.png",
    "desktop": "https://toolcenter.dev/storage/responsive/abc123-desktop.png"
  },
  "processing_time_ms": 2345.6
}

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/responsive" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

GET POST Accessibility Checker API

Analyze websites for accessibility issues and WCAG compliance violations.

Endpoint

POST /api/v1/accessibility

Parameters

Name Type Required Description
urlstringYesURL to check for accessibility issues
standardstringNoWCAG standard: AA or AAA (default: AA)

Response

{
  "url": "https://example.com",
  "score": 78,
  "violations": 5,
  "warnings": 12,
  "issues": [
    {"type": "violation", "description": "Image missing alt attribute"}
  ],
  "processing_time_ms": 1876.3
}

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/accessibility" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

GET POST SEO Analyzer API

Comprehensive SEO analysis with recommendations for improving search engine rankings.

Endpoint

POST /api/v1/seo

Parameters

Name Type Required Description
urlstringYesURL to analyze for SEO optimization

Response

{
  "url": "https://example.com",
  "score": 82,
  "title": "Example Domain",
  "meta_description": "This domain is for use in examples...",
  "headings": {"h1": 1, "h2": 3},
  "recommendations": ["Add meta description", "Optimize images"],
  "processing_time_ms": 1234.5
}

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/seo" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

GET POST Barcode Generator API

Generate various types of barcodes including Code 128, QR codes, UPC, and more.

Endpoint

POST /api/v1/barcode

Parameters

Name Type Required Description
textstringYesText to encode in barcode
typestringNoBarcode type: code128, ean13, upc, qr (default: code128)
widthintegerNoBarcode width in pixels (default: 200)
heightintegerNoBarcode height in pixels (default: 100)

Response

Returns the barcode as binary image data with appropriate content-type header.

Content-Type: image/png
X-Processing-Time: 45ms

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/barcode" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "123456789", "format": "code128"}'

GET POST Image Resize API

Resize and optimize images with various fit modes and format conversion.

Endpoint

POST /api/v1/image-resize

Parameters

Name Type Required Description
urlstringYesURL of image to resize
widthintegerNoTarget width (10-4000 pixels)
heightintegerNoTarget height (10-4000 pixels)
fitstringNoFit mode: cover, contain, fill, inside, outside
formatstringNoOutput format: png, jpg, jpeg, webp
qualityintegerNoJPEG quality (1-100, default: 85)

Response

Returns the resized image as binary data with appropriate content-type header.

Content-Type: image/png
X-Processing-Time: 156ms
X-Original-Size: 1920x1080
X-New-Size: 800x450

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/image-resize" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/image.jpg", "width": 400}'

GET POST Carbon Footprint API

Calculate the carbon footprint and environmental impact of websites.

Endpoint

POST /api/v1/carbon

Parameters

Name Type Required Description
urlstringYesURL to analyze for carbon footprint

Response

{
  "url": "https://example.com",
  "carbon_grams": 4.6,
  "energy_kwh": 0.0093,
  "rating": "A+",
  "page_size_bytes": 1048576,
  "green_hosting": false,
  "processing_time_ms": 2345.7
}

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/carbon" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

GET POST Website Diff API

Compare two websites visually and detect changes between different versions.

Endpoint

POST /api/v1/diff

Parameters

Name Type Required Description
url1stringYesFirst URL to compare
url2stringYesSecond URL to compare
thresholdfloatNoSensitivity threshold (0.0-1.0, default: 0.1)

Response

{
  "url1": "https://example.com",
  "url2": "https://example.org",
  "similarity_percent": 87.3,
  "differences_found": 23,
  "diff_image": "https://toolcenter.dev/storage/diffs/abc123-diff.png",
  "processing_time_ms": 3456.8
}

GET POST Web Search API

Search the web from your code. Multi-engine results from Google, Bing, DuckDuckGo, and Brave in a single API call with clean JSON output.

Endpoints

GET/POST /api/v1/search
GET/POST /api/v1/search/autocomplete

Search Parameters

Name Type Required Description
querystringYesSearch query (1-500 characters)
categorystringNoSearch category: general, images, news, videos, music, files, it, science, social_media (default: general)
enginesstringNoComma-separated engine names: google, bing, duckduckgo, brave, wikipedia
languagestringNoLanguage code, e.g. en, es, de, fr (default: en)
limitintegerNoNumber of results to return: 1-50 (default: 10)
pageintegerNoPage number: 1-10 (default: 1)
safeintegerNoSafe search: 0 = off, 1 = moderate, 2 = strict (default: 0)
timestringNoTime range filter: day, week, month, year

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "best javascript frameworks 2026",
    "category": "general",
    "limit": 10,
    "language": "en"
  }'

Response

{
  "query": "best javascript frameworks 2026",
  "category": "general",
  "totalResults": 38,
  "returnedResults": 10,
  "results": [
    {
      "position": 1,
      "title": "6 Best JavaScript Frameworks for 2026",
      "url": "https://strapi.io/blog/best-javascript-frameworks",
      "snippet": "The JavaScript framework landscape has evolved...",
      "engine": "google",
      "engines": ["google", "duckduckgo", "brave"],
      "score": 6.6,
      "thumbnail": null,
      "publishedAt": null
    }
  ],
  "suggestions": ["javascript frameworks comparison"],
  "corrections": [],
  "infoboxes": []
}

Autocomplete Endpoint

Get search suggestions as users type. Only requires the query parameter.

curl -X POST "https://api.toolcenter.dev/v1/search/autocomplete" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "best java"}'

// Response:
{
  "query": "best java",
  "suggestions": [
    "best javascript frameworks",
    "best java ide",
    "best java books 2026"
  ]
}

Search Categories

general

Web pages (default)

images

Image results with thumbnails

news

News articles

videos

Video content

it

Stack Overflow, GitHub

science

Academic & scientific

GET POST DNS Lookup API

Perform DNS lookups and retrieve DNS records for any domain.

Endpoint

GET/POST /api/v1/dns

Parameters

Name Type Required Description
domainstringYesDomain to lookup (max 255 chars)
typestringNoDNS record type: A, AAAA, MX, NS, TXT, CNAME, SOA, ALL (default: ALL)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/dns" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "example.com",
    "type": "A"
  }'

Response

{
  "domain": "example.com",
  "records": [
    {
      "host": "example.com",
      "type": "A",
      "ip": "93.184.216.34",
      "ttl": 86400
    }
  ],
  "query_time_ms": 45.2
}

GET POST SSL Certificate API

Check SSL certificate validity, expiration dates, and certificate information for any domain.

Endpoint

GET/POST /api/v1/ssl

Parameters

Name Type Required Description
domainstringYesDomain to check SSL certificate (max 255 chars)
portintegerNoPort number (1-65535, default: 443)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/ssl" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "example.com",
    "port": 443
  }'

Response

{
  "domain": "example.com",
  "valid": true,
  "issuer": "DigiCert Inc",
  "subject": "example.com",
  "valid_from": "2024-01-15 00:00:00",
  "valid_to": "2025-01-15 23:59:59",
  "days_remaining": 234,
  "serial": "ABC123456789",
  "signature_algorithm": "RSA-SHA256",
  "san_domains": ["www.example.com", "example.org"]
}

GET POST HTTP Status API

Check HTTP status codes, response times, and server headers for any URL.

Endpoint

GET/POST /api/v1/status

Parameters

Name Type Required Description
urlstringYesURL to check status
follow_redirectsbooleanNoFollow redirects (default: true)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/status" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "follow_redirects": true
  }'

Response

{
  "url": "https://example.com",
  "status_code": 200,
  "status_text": "OK",
  "response_time_ms": 156.7,
  "headers": {
    "Content-Type": "text/html",
    "Server": "nginx/1.18.0"
  },
  "redirect_chain": [],
  "ssl": true,
  "content_type": "text/html",
  "server": "nginx/1.18.0"
}

GET POST Tech Stack API

Detect technologies, frameworks, CMS, and tools used by any website.

Endpoint

GET/POST /api/v1/techstack

Parameters

Name Type Required Description
urlstringYesWebsite URL to analyze
webhook_urlstringNoWebhook URL for async processing

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/techstack" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com"
  }'

Response

{
  "url": "https://example.com",
  "technologies": [
    {
      "name": "WordPress",
      "category": "cms",
      "confidence": 0.9
    },
    {
      "name": "PHP",
      "category": "framework",
      "confidence": 0.8
    }
  ],
  "server": {
    "software": "nginx/1.18.0",
    "powered_by": "PHP/8.1.0"
  }
}

GET POST WHOIS API

Get domain registration information, registrar details, and DNS records via WHOIS lookup.

Endpoint

GET/POST /api/v1/whois

Parameters

Name Type Required Description
domainstringYesDomain name for WHOIS lookup
webhook_urlstringNoWebhook URL for async processing

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/whois" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "example.com"
  }'

Response

{
  "domain": "example.com",
  "registrar": "IANA Reserved Domain",
  "dates": {
    "created": "1995-08-14",
    "expires": "2025-08-13",
    "updated": "2024-08-14"
  },
  "name_servers": [
    "ns1.example.com",
    "ns2.example.com"
  ],
  "status": [
    "clientTransferProhibited"
  ],
  "dnssec": "unsigned"
}

GET POST Favicon API

Extract favicon URLs and return either the actual favicon image or its metadata from any website.

Endpoint

GET/POST /api/v1/favicon

Parameters

Name Type Required Description
urlstringYesWebsite URL to extract favicon from
formatstringNoResponse format: image or json (default: json)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/favicon" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "json"
  }'

Response

{
  "url": "https://example.com",
  "favicon_url": "https://example.com/favicon.ico",
  "format": "ico",
  "size": null
}

GET POST Color Palette API

Extract dominant colors and color palettes from websites or images.

Endpoint

GET/POST /api/v1/colors

Parameters

Name Type Required Description
urlstringYesWebsite or image URL to extract colors from
countintegerNoNumber of colors to extract (1-10, default: 5)
webhook_urlstringNoWebhook URL for async processing

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/colors" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "count": 5
  }'

Response

{
  "url": "https://example.com",
  "colors": [
    {
      "hex": "#2563eb",
      "rgb": {
        "r": 37,
        "g": 99,
        "b": 235
      },
      "percentage": 42.3,
      "name": "blue"
    }
  ],
  "dominant_color": {
    "hex": "#2563eb",
    "rgb": {
      "r": 37,
      "g": 99,
      "b": 235
    },
    "percentage": 42.3,
    "name": "blue"
  }
}

GET POST Placeholder API

Generate customizable placeholder images with custom text, colors, and dimensions.

Endpoint

GET/POST /api/v1/placeholder

Parameters

Name Type Required Description
widthintegerYesImage width (1-2000 pixels)
heightintegerYesImage height (1-2000 pixels)
textstringNoCustom text (default: "{width}x{height}", max 200 chars)
bg_colorstringNoBackground color hex (default: #CCCCCC)
text_colorstringNoText color hex (default: #969696)
formatstringNoOutput format: png, jpg, svg (default: png)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/placeholder" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "width": 800,
    "height": 600,
    "text": "Coming Soon",
    "bg_color": "#3b82f6",
    "text_color": "#ffffff",
    "format": "png"
  }'

Response

Returns the generated image as binary data with appropriate Content-Type header.

GET OG Image API

Generate Open Graph images with custom titles, subtitles, colors, and branding for social media sharing.

Endpoint

GET /api/v1/og-image

Parameters

Name Type Required Description
titlestringYesMain title text (max 200 chars)
subtitlestringNoSubtitle text (max 300 chars)
bgColorstringNoBackground color (max 20 chars)
textColorstringNoText color (max 20 chars)
fontSizeintegerNoFont size (12-120 pixels)
logostringNoLogo image URL
patternstringNoBackground pattern: dots, lines, grid, none
webhook_urlstringNoWebhook URL for async processing
storebooleanNoStore image in cloud storage
response_typestringNoResponse type: json or binary

Code Examples

curl -X GET "https://api.toolcenter.dev/v1/og-image?title=Welcome&subtitle=Join%20our%20platform&bgColor=blue" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

Returns the generated OG image as binary data (PNG format) with appropriate Content-Type header.

GET POST Watermark API

Add text watermarks to website screenshots with customizable position, opacity, and styling.

Endpoint

GET/POST /api/v1/watermark

Parameters

Name Type Required Description
urlstringYes*Website URL (*required without html)
htmlstringYes*HTML content (*required without url)
watermarkTextstringYesWatermark text (max 500 chars)
watermarkPositionstringNoPosition: center, bottom-right, bottom-left, top-right, top-left (default: bottom-right)
watermarkOpacityfloatNoOpacity (0.0-1.0)
watermarkFontSizeintegerNoFont size (8-200 pixels)
watermarkColorstringNoWatermark color (max 100 chars)
widthintegerNoScreenshot width (320-3840, default: 1920)
heightintegerNoScreenshot height (240-2160, default: 1080)
formatstringNoOutput format: png, jpg, webp (default: png)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/watermark" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "watermarkText": "© Example Company",
    "watermarkPosition": "bottom-right",
    "watermarkOpacity": 0.7,
    "format": "png"
  }'

Response

Returns the watermarked image as binary data with appropriate Content-Type header and X-Render-Time header.

GET POST Compress API

Compress website screenshots and images with customizable quality and size optimization.

Endpoint

GET/POST /api/v1/compress

Parameters

Name Type Required Description
urlstringYes*Website URL (*required without html)
htmlstringYes*HTML content (*required without url)
qualityintegerNoCompression quality (1-100, default: 80)
maxWidthintegerNoMaximum width (1-7680 pixels)
maxHeightintegerNoMaximum height (1-4320 pixels)
formatstringNoOutput format: png, jpg, jpeg, webp (default: jpeg)
widthintegerNoCapture width (320-3840 pixels)
heightintegerNoCapture height (240-2160 pixels)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/compress" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "quality": 60,
    "maxWidth": 1200,
    "format": "jpeg"
  }'

Response

Returns the compressed image as binary data with Content-Type header, X-Render-Time, X-Original-Size, and X-Compressed-Size headers.

GET POST HTML to Image API

Convert HTML content and custom CSS into high-quality images with transparent backgrounds support.

Endpoint

GET/POST /api/v1/html-to-image

Parameters

Name Type Required Description
htmlstringYesHTML content to render
cssstringNoCustom CSS styles (max 50000 chars)
widthintegerNoImage width (100-3840, default: 800)
heightintegerNoImage height (100-2160, default: 600)
formatstringNoOutput format: png, jpg, webp (default: png)
qualityintegerNoJPEG quality (1-100, applies to JPG format only)
omitBackgroundbooleanNoTransparent background (default: false)

Code Examples

curl -X POST "https://api.toolcenter.dev/v1/html-to-image" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "html": "

Hello World!

This is HTML rendered as an image.

", "width": 800, "height": 400, "format": "png" }'

Response

Returns the rendered image as binary data with appropriate Content-Type header and X-Render-Time header.

Integrations

Connect ToolCenter with your favorite automation platforms using standard HTTP requests.

⚡ Zapier

Connect ToolCenter to 5,000+ apps with Zapier webhooks.

1. Create a Zap

Choose your trigger app (Google Sheets, Airtable, Typeform, etc.) and set up the trigger event.

2. Add Webhooks Action

Add "Webhooks by Zapier" as your action and choose "Custom Request".

Method: GET
URL: https://api.toolcenter.dev/v1/screenshot

Headers:
  Authorization: Bearer YOUR_API_KEY

Query String:
  url: {{url_from_trigger}}
  format: png
  width: 1920

3. Example: Google Sheets → Screenshot

Trigger: New row in Google Sheets

Action: Webhook GET to ToolCenter with URL from column A

Result: Screenshot generated automatically for every new URL

🔄 Make (Integromat)

Build visual automation flows with Make's powerful scenario builder.

1. Add HTTP Module

Add the "HTTP > Make a request" module to your scenario.

2. Configure Request

URL: https://api.toolcenter.dev/v1/screenshot
Method: GET
Headers:
  Authorization: Bearer YOUR_API_KEY
Query String:
  url: {{your_dynamic_url}}
  format: png

3. Process Results

Use the JSON response to integrate with Dropbox, Google Drive, email, or any other Make module.

🔗 n8n

Self-hosted workflow automation with full control over your data.

1. Add HTTP Request Node

Drag the "HTTP Request" node into your workflow.

2. Configure Node

Request Method: GET
URL: https://api.toolcenter.dev/v1/screenshot
Authentication: Header Auth
  Name: Authorization
  Value: Bearer YOUR_API_KEY
Query Parameters:
  url: ={{ $node["Trigger"].json["website_url"] }}
  format: png
  full_page: true

3. Chain Results

Connect additional nodes to save files, send notifications, or trigger other workflows.

🐙 GitHub Actions

Automate screenshots in your CI/CD pipeline for visual regression testing.

# .github/workflows/screenshot.yml
name: Visual Snapshot
on:
  push:
    branches: [main]

jobs:
  screenshot:
    runs-on: ubuntu-latest
    steps:
      - name: Take screenshot
        run: |
          curl -s "https://api.toolcenter.dev/v1/screenshot?url=https://yoursite.com&format=png"             -H "Authorization: Bearer ${{ secrets.TOOLCENTER_API_KEY }}"             -o screenshot.png

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: screenshot
          path: screenshot.png

Store your API key as a GitHub secret (TOOLCENTER_API_KEY) for security.

🎯 Direct Webhooks

ToolCenter can POST results directly to your endpoint. No polling required.

POST https://api.toolcenter.dev/v1/screenshot
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

{
  "url": "https://example.com",
  "webhook_url": "https://your-app.com/webhook",
  "format": "png",
  "width": 1920
}

Async processing: ToolCenter processes the request and POSTs the result to your webhook_url when complete.