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_KEYNeed 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
| Code | Meaning | Description |
|---|---|---|
| 200 | Success | Request completed successfully |
| 400 | Bad Request | Missing or invalid parameters |
| 401 | Unauthorized | Missing or invalid API key |
| 422 | Validation Error | Parameters failed validation (e.g., invalid URL) |
| 429 | Rate Limited | Too many requests — check your plan limits |
| 500 | Server Error | Something went wrong on our end |
Rate Limiting
Every response includes rate limit headers:
| Header | Description |
|---|---|
| X-RateLimit-Limit | Your plan's monthly request limit |
| X-RateLimit-Remaining | Requests remaining this month |
| X-RateLimit-Reset | UTC 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
https://api.toolcenter.dev/v1https://api.toolcenter.dev/v1Both 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 |
|---|---|
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - Plan limits exceeded |
| 429 | Rate Limited - Too many requests |
| 500 | Internal Error - Something went wrong |
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/screenshotParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes* | URL to screenshot (*required without html) |
| html | string | No | Raw HTML content to render |
| width | integer | No | Viewport width (320-3840, default: 1920) |
| height | integer | No | Viewport height (240-2160, default: 1080) |
| format | string | No | Output format: png, jpg, webp (default: png) |
| fullPage | boolean | No | Capture full page height (default: false) |
| delay | integer | No | Wait time in ms before capture (0-10000) |
| selector | string | No | CSS selector to capture specific element |
| darkMode | boolean | No | Enable dark mode (default: false) |
| deviceScale | integer | No | Device pixel ratio (1-3, default: 1) |
| blockAds | boolean | No | Block advertisements (default: false) |
| customCss | string | No | Custom CSS to inject |
| customJs | string | No | Custom JavaScript to execute |
| blockCookieBanners | boolean | No | Remove cookie consent banners (default: false) |
| blockChatWidgets | boolean | No | Remove chat widgets like Intercom, Drift (default: false) |
| userAgent | string | No | Custom User-Agent string |
| headers | object | No | Custom HTTP headers as key-value pairs |
| authentication | object | No | HTTP Basic Auth: {username, password} |
| emulateDevice | string | No | Device 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 |
| geolocation | object | No | Spoof geolocation: {latitude, longitude} |
| timezone | string | No | Timezone override (e.g. America/New_York) |
| language | string | No | Browser language (e.g. en-US, es-ES) |
| quality | integer | No | JPEG/WebP quality (1-100, default: 80) |
| omitBackground | boolean | No | Transparent background for PNG (default: false) |
| clip | object | No | Clip region: {x, y, width, height} |
| store | boolean | No | Store result and return URL instead of binary (default: false) |
| markdown | string | No | Markdown content to render (alternative to url/html) |
| reducedMotion | boolean | No | Emulate prefers-reduced-motion (default: false) |
| response_type | string | No | Response format: json or binary (default: binary) |
| webhook_url | string | No | URL 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/100GET 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/pdfParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes* | URL to convert to PDF (*required without html/markdown) |
| html | string | No | Raw HTML content to convert |
| markdown | string | No | Markdown content (rendered with styled typography) |
| landscape | boolean | No | Landscape orientation (default: false) |
| printBackground | boolean | No | Include background graphics (default: true) |
| format | string | No | Paper format: A4, A3, A5, Letter, Legal, Tabloid (default: A4) |
| margin | object | No | Page margins: {top, right, bottom, left} (e.g. "1cm", "20px") |
| scale | number | No | Scale of the webpage rendering, 0.1 to 2.0 (default: 1) |
| pageRanges | string | No | Pages to print, e.g. "1-3", "1,3,5-7" |
| headerTemplate | string | No | HTML template for page header. Use classes: date, title, url, pageNumber, totalPages |
| footerTemplate | string | No | HTML template for page footer. Same classes as header |
| displayHeaderFooter | boolean | No | Show header and footer (default: false) |
| preferCSSPageSize | boolean | No | Use CSS @page size instead of format param (default: false) |
| fitOnePage | boolean | No | Fit entire page content on a single PDF page (default: false) |
| tagged | boolean | No | Generate tagged (accessible) PDF (default: false) |
| width | string | No | Custom page width (e.g. "800px", "10in") |
| height | string | No | Custom page height (e.g. "600px", "8in") |
| delay | integer | No | Wait time in ms before generating PDF (0-10000, default: 0) |
| darkMode | boolean | No | Emulate dark color scheme (default: false) |
| blockAds | boolean | No | Hide advertisements (default: false) |
| blockCookieBanners | boolean | No | Hide cookie consent banners (default: false) |
| blockChatWidgets | boolean | No | Hide live chat widgets (default: false) |
| customCss | string | No | Custom CSS to inject before rendering |
| customJs | string | No | Custom JavaScript to execute before rendering |
| authentication | object | No | HTTP Basic Auth: {username, password} |
| headers | object | No | Custom HTTP headers as key-value pairs |
| emulateDevice | string | No | Device emulation: iPhone 12-16, iPad, Pixel 5/7, MacBook Air/Pro, etc. |
| timezone | string | No | Timezone for page rendering (e.g. America/New_York) |
| language | string | No | Accept-Language header (e.g. "en-US", "fr-FR") |
| store | boolean | No | Store result and return URL instead of binary (default: false) |
| response_type | string | No | Response format: json (base64 + metadata) or binary (default: binary) |
| webhook_url | string | No | URL 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.pdfGET POST QR Code API
Generate customizable QR codes with logos, colors, and multiple formats.
Endpoint
POST /api/v1/qrParameters
| Name | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | Text or data to encode (max 4000 chars) |
| size | integer | No | QR code size in pixels (100-2000, default: 300) |
| format | string | No | Output format: png, svg (default: png) |
| color | string | No | Foreground color (hex, default: #000000) |
| bgColor | string | No | Background color (hex, default: #ffffff) |
| logo | string | No | URL 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.pngGET POST Metadata API
Extract metadata, Open Graph data, and structured information from any URL.
Endpoint
POST /api/v1/metadataParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL 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/usageExample 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
/api/v1/signed-url| Parameter | Type | Required | Description |
|---|---|---|---|
| tool | string | Yes | API tool to use: screenshot, pdf, qr, og-image, or metadata |
| params | object | Yes | Parameters to pass to the tool (e.g. url, format, width) |
| expires_in | integer | No | Seconds 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
/api/v1/schedules| Parameter | Type | Required | Description |
|---|---|---|---|
| tool | string | Yes | API tool: screenshot, pdf, qr, og-image, or metadata |
| params | object | Yes | Parameters to pass to the tool on each run |
| interval | string | Yes | Run frequency: hourly, every_6h, every_12h, daily, or weekly |
| webhook_url | string | No | URL 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
/api/v1/schedulescurl "https://api.toolcenter.dev/v1/schedules" \
-H "Authorization: Bearer YOUR_API_KEY"Get Schedule Details
/api/v1/schedules/{id}curl "https://api.toolcenter.dev/v1/schedules/12" \
-H "Authorization: Bearer YOUR_API_KEY"Update a Schedule
/api/v1/schedules/{id}| Parameter | Type | Description |
|---|---|---|
| is_active | boolean | Enable or disable the schedule |
| interval | string | Change frequency: hourly, every_6h, every_12h, daily, weekly |
| webhook_url | string | Update the webhook destination URL |
| params | object | Update 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
/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
/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 |
|---|---|
pending | Job is queued and waiting to be processed |
processing | Job is currently being executed |
completed | Job finished successfully — result_url available |
failed | Job 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
/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-Type | MIME type of the stored file (e.g. image/png, application/pdf) |
| X-Expires-At | ISO 8601 timestamp when the file will be deleted |
| Cache-Control | public, 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-jsOfficial TypeScript SDK with full type support.
Python
pip install toolcenter-pythonPythonic wrapper with async support.
PHP
composer require toolcenter/php-sdkLaravel-friendly SDK with service providers.
Go
go get github.com/toolcenter/go-sdkLightweight Go client library.
Webhooks
Use webhooks for asynchronous processing of long-running operations.
How It Works
- Include
webhook_urlparameter in your API request - Receive immediate response with
job_id - 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/shortenParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL 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/markdownParameters
| Name | Type | Required | Description |
|---|---|---|---|
| markdown | string | Yes | Markdown content to convert (max 100000 chars) |
| options.gfm | boolean | No | Enable GitHub Flavored Markdown (default: false) |
| options.sanitize | boolean | No | Sanitize 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/minifyParameters
| Name | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | Code content to minify (max 1000000 chars) |
| type | string | Yes | Content 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/base64Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | Action to perform: encode or decode |
| content | string | No* | Text content (*required without url, max 10MB) |
| url | string | No* | 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/hashParameters
| Name | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | Content to hash (max 10MB) |
| algorithms | array | No | Hash 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/jsonParameters
| Name | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | JSON content to process (max 10MB) |
| action | string | No | Action: 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-dataParameters
| Name | Type | Required | Description |
|---|---|---|---|
| schema | object | Yes | Field map. Example: {"id":"uuid","email":"email","role":{"type":"enum","values":["admin","user"]}} |
| count | integer | No | Rows to generate (1-1000). Default: 10 |
| locale | string | No | Faker locale (e.g. en_US, es_ES) |
| seed | integer | No | Deterministic 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/cronParameters
| Name | Type | Required | Description |
|---|---|---|---|
| expression | string | Yes | Cron expression (5 fields) or alias: @yearly, @monthly, @weekly, @daily, @hourly. Supports month names (JAN-DEC) and day names (MON-SUN) |
| num_next | integer | No | Number of next run dates to calculate (1-100, default: 5) |
| timezone | string | No | IANA timezone for next run calculation (e.g. America/New_York, Europe/London). Default: UTC |
| from | string | No | Calculate 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-validateParameters
| Name | Type | Required | Description |
|---|---|---|---|
| string | Yes | Email 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/geoipParameters
| Name | Type | Required | Description |
|---|---|---|---|
| ip | string | No | IP 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-agentParameters
| Name | Type | Required | Description |
|---|---|---|---|
| ua | string | No | User 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 UUIDGenerate Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| version | integer | No | UUID version: 1 (time-based), 4 (random), 7 (Unix epoch sortable). Default: 4 |
| count | integer | No | Number of UUIDs to generate (1-100, default: 1) |
| format | string | No | Output format: standard, compact (no dashes), urn (urn:uuid:...), braces ({...}) |
| uppercase | boolean | No | Return uppercase UUIDs (default: false) |
Parse Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| uuid | string | Yes | UUID 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/passwordParameters
| Name | Type | Required | Description |
|---|---|---|---|
| length | integer | No | Password length (4-256, default: 16) |
| count | integer | No | Number to generate (1-100, default: 1) |
| uppercase | boolean | No | Include A-Z (default: true) |
| lowercase | boolean | No | Include a-z (default: true) |
| numbers | boolean | No | Include 0-9 (default: true) |
| symbols | boolean | No | Include symbols !@#$%^&* (default: true) |
| exclude_similar | boolean | No | Exclude similar chars i, l, 1, I, o, O, 0 (default: false) |
| exclude_ambiguous | boolean | No | Exclude ambiguous chars: backticks, brackets (default: false) |
| memorable | boolean | No | Word-based human-readable password (default: false) |
| separator | string | No | Word separator for memorable passwords (default: -) |
| prefix | string | No | Fixed prefix to prepend (max 20 chars) |
| suffix | string | No | Fixed suffix to append (max 20 chars) |
| custom_charset | string | No | Custom 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/scrapeParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to scrape content from |
| selector | string | No | CSS selector to extract specific elements |
| format | string | No | Output format: text, html, or json (default: text) |
| wait_for | string | No | CSS 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/pagespeedParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL 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/responsiveParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to preview responsively |
| devices | array | No | Device 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] |
| format | string | No | Image format: png, jpg, webp (default: png) |
| quality | integer | No | Image quality 1-100 (for jpg/webp) |
| fullPage | boolean | No | Capture full page for each device (default: false) |
| darkMode | boolean | No | Emulate dark color scheme (default: false) |
| blockAds | boolean | No | Hide advertisements (default: false) |
| blockCookieBanners | boolean | No | Hide cookie consent banners (default: false) |
| delay | integer | No | Wait 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 Broken Link Checker API
Scan websites for broken links and get detailed reports on HTTP status codes.
Endpoint
POST /api/v1/broken-linksParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to check for broken links |
| depth | integer | No | Crawl depth (1-3, default: 1) |
Response
{
"url": "https://example.com",
"total_links": 45,
"broken_links": 2,
"issues": [
{"url": "https://example.com/404-page", "status": 404}
],
"processing_time_ms": 5432.1
}Code Examples
curl -X POST "https://api.toolcenter.dev/v1/broken-links" \
-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/accessibilityParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to check for accessibility issues |
| standard | string | No | WCAG 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/seoParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL 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/barcodeParameters
| Name | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | Text to encode in barcode |
| type | string | No | Barcode type: code128, ean13, upc, qr (default: code128) |
| width | integer | No | Barcode width in pixels (default: 200) |
| height | integer | No | Barcode 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: 45msCode 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-resizeParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL of image to resize |
| width | integer | No | Target width (10-4000 pixels) |
| height | integer | No | Target height (10-4000 pixels) |
| fit | string | No | Fit mode: cover, contain, fill, inside, outside |
| format | string | No | Output format: png, jpg, jpeg, webp |
| quality | integer | No | JPEG 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: 800x450Code 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/carbonParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL 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/diffParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url1 | string | Yes | First URL to compare |
| url2 | string | Yes | Second URL to compare |
| threshold | float | No | Sensitivity 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/autocompleteSearch Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Search query (1-500 characters) |
| category | string | No | Search category: general, images, news, videos, music, files, it, science, social_media (default: general) |
| engines | string | No | Comma-separated engine names: google, bing, duckduckgo, brave, wikipedia |
| language | string | No | Language code, e.g. en, es, de, fr (default: en) |
| limit | integer | No | Number of results to return: 1-50 (default: 10) |
| page | integer | No | Page number: 1-10 (default: 1) |
| safe | integer | No | Safe search: 0 = off, 1 = moderate, 2 = strict (default: 0) |
| time | string | No | Time 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/dnsParameters
| Name | Type | Required | Description |
|---|---|---|---|
| domain | string | Yes | Domain to lookup (max 255 chars) |
| type | string | No | DNS 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/sslParameters
| Name | Type | Required | Description |
|---|---|---|---|
| domain | string | Yes | Domain to check SSL certificate (max 255 chars) |
| port | integer | No | Port 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/statusParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to check status |
| follow_redirects | boolean | No | Follow 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 Link Preview API
Extract link preview data including titles, descriptions, images, and Open Graph metadata.
Endpoint
GET/POST /api/v1/link-previewParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to extract preview data from |
| webhook_url | string | No | Webhook URL for async processing |
Code Examples
curl -X POST "https://api.toolcenter.dev/v1/link-preview" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com"
}'Response
{
"url": "https://example.com",
"title": "Example Domain",
"description": "This domain is for use in illustrative examples in documents.",
"image": "https://example.com/og-image.png",
"favicon": "https://example.com/favicon.ico",
"domain": "example.com",
"og": {
"title": "Example Domain",
"description": "This domain is for use in illustrative examples.",
"image": "https://example.com/og-image.png"
},
"twitter": {
"card": "summary_large_image"
}
}GET POST Tech Stack API
Detect technologies, frameworks, CMS, and tools used by any website.
Endpoint
GET/POST /api/v1/techstackParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Website URL to analyze |
| webhook_url | string | No | Webhook 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/whoisParameters
| Name | Type | Required | Description |
|---|---|---|---|
| domain | string | Yes | Domain name for WHOIS lookup |
| webhook_url | string | No | Webhook 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/faviconParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Website URL to extract favicon from |
| format | string | No | Response 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/colorsParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Website or image URL to extract colors from |
| count | integer | No | Number of colors to extract (1-10, default: 5) |
| webhook_url | string | No | Webhook 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/placeholderParameters
| Name | Type | Required | Description |
|---|---|---|---|
| width | integer | Yes | Image width (1-2000 pixels) |
| height | integer | Yes | Image height (1-2000 pixels) |
| text | string | No | Custom text (default: "{width}x{height}", max 200 chars) |
| bg_color | string | No | Background color hex (default: #CCCCCC) |
| text_color | string | No | Text color hex (default: #969696) |
| format | string | No | Output 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-imageParameters
| Name | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Main title text (max 200 chars) |
| subtitle | string | No | Subtitle text (max 300 chars) |
| bgColor | string | No | Background color (max 20 chars) |
| textColor | string | No | Text color (max 20 chars) |
| fontSize | integer | No | Font size (12-120 pixels) |
| logo | string | No | Logo image URL |
| pattern | string | No | Background pattern: dots, lines, grid, none |
| webhook_url | string | No | Webhook URL for async processing |
| store | boolean | No | Store image in cloud storage |
| response_type | string | No | Response 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/watermarkParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes* | Website URL (*required without html) |
| html | string | Yes* | HTML content (*required without url) |
| watermarkText | string | Yes | Watermark text (max 500 chars) |
| watermarkPosition | string | No | Position: center, bottom-right, bottom-left, top-right, top-left (default: bottom-right) |
| watermarkOpacity | float | No | Opacity (0.0-1.0) |
| watermarkFontSize | integer | No | Font size (8-200 pixels) |
| watermarkColor | string | No | Watermark color (max 100 chars) |
| width | integer | No | Screenshot width (320-3840, default: 1920) |
| height | integer | No | Screenshot height (240-2160, default: 1080) |
| format | string | No | Output 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/compressParameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes* | Website URL (*required without html) |
| html | string | Yes* | HTML content (*required without url) |
| quality | integer | No | Compression quality (1-100, default: 80) |
| maxWidth | integer | No | Maximum width (1-7680 pixels) |
| maxHeight | integer | No | Maximum height (1-4320 pixels) |
| format | string | No | Output format: png, jpg, jpeg, webp (default: jpeg) |
| width | integer | No | Capture width (320-3840 pixels) |
| height | integer | No | Capture 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-imageParameters
| Name | Type | Required | Description |
|---|---|---|---|
| html | string | Yes | HTML content to render |
| css | string | No | Custom CSS styles (max 50000 chars) |
| width | integer | No | Image width (100-3840, default: 800) |
| height | integer | No | Image height (100-2160, default: 600) |
| format | string | No | Output format: png, jpg, webp (default: png) |
| quality | integer | No | JPEG quality (1-100, applies to JPG format only) |
| omitBackground | boolean | No | Transparent 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: 19203. 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: png3. 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: true3. 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.pngStore 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.