pixelseo.ai docs
Two tools, one SEO package. Upload your own images to get SEO metadata, or generate new images with metadata built in. Both are available via REST API and work with n8n, Make, Zapier, and custom workflows.
Quick start
- 1 Create an account
Go to /sign-up. Every new account includes 3 free credits — no credit card required.
- 2
- 3 Add a page URL (optional)
If you know the page the image will appear on, add its URL. Pixel Vision will pre-fill the
contentUrlin your schema so it's ready to publish without edits. - 4 Review and download
Every field is editable — filename, alt text, and schema. Download a ZIP with renamed images and a CSV of all metadata, ready for your CMS.
Optimize images
The optimizer at /process runs Pixel Vision on any image you upload and returns a complete SEO package. Works with brand photos, stock images, client photos, and AI-generated images from any platform.
Naming modes
Pixel Vision analyzes the image content and generates a keyword-rich, kebab-case filename, descriptive alt text, and ImageObject schema. Best when you want to move fast or don't have a keyword strategy for each image.
Build a combinatorial keyword formula using word groups (e.g. [color] + [material] + [product] + [room]). The formula generates the filenames; Pixel Vision handles the alt text and schema. Best for product images, real estate photos, or any image set with a consistent naming convention.
Page URL context
You can provide a URL at two levels:
- Site / fallback URL — applies to all images in the batch that don't have a specific URL
- Per-image URL — set in each file row, overrides the site URL for that image
The URL is pre-filled as contentUrl in the ImageObject schema. If you provide the URL the image will actually live on, your schema is ready to publish without edits.
URL context does not change how Pixel Vision names the file or writes the alt text — it only populates contentUrl in the schema.
Supported formats & limits
| Property | Value |
|---|---|
| Input formats | JPEG, PNG, WebP, GIF |
| Max file size | 5 MB per image (oversized images can be compressed to WebP in-browser) |
| Max batch size | 20 images per run |
| Output formats | WebP (recommended), JPG, PNG |
| Cost | 1 credit per image (charged only on success) |
Generate images
The generator at /generate creates new images using Google Imagen and returns the full SEO package automatically. Three prompt modes:
Choose one of 36 curated styles. Optionally describe a subject. pixelseo handles the prompt engineering to match the style's visual characteristics.
Write your own prompt from scratch. Full control over every word. SEO metadata is still generated automatically from the resulting image content.
Start with the style preset prompt and edit it directly. Structured foundation with manual fine-tuning.
Orientations & formats
| Option | Values | Default |
|---|---|---|
| Orientation | landscape, portrait, square | landscape |
| Output format | webp, jpeg, png | webp |
The underlying AI model returns PNG internally. Format conversion happens automatically on download.
SEO output
Every image — whether uploaded or generated — includes the same three-piece SEO package. All fields are editable before download.
A descriptive, hyphen-separated filename based on the image content or your formula. Example: red-oak-hardwood-flooring-living-room.webp. Search engines use filenames as a relevance signal before a user ever clicks.
A natural-language description of the image written for both screen readers and image search. Under 125 characters, keyword-relevant, and not stuffed. Pixel Vision reads the actual image pixels — not just the filename — to write this.
A structured data block ready to paste into your page's <head> or CMS schema field. Tells Google the image's name, description, content URL, and encoding format. If you provided a page URL, contentUrl is pre-filled — schema is ready to publish as-is.
The ZIP export contains renamed image files and a seo-data.csv with original filename, new filename, alt text, and schema for every image — useful for bulk importing into a CMS.
Dashboard
Your dashboard at /dashboard shows your 12 most recent generations. From there you can:
- Download images in the original requested format (WebP, JPEG, or PNG)
- Copy alt text or schema markup for any past generation
- View your current credit balance
- Create, name, and revoke API keys
Generated images are stored for 12 months. Uploaded images are processed in-memory and never stored. Download anything you want to keep permanently.
API
The pixelseo.ai REST API exposes two endpoints — one for optimizing uploaded images and one for generating new ones. Both return the same SEO package structure and use the same credit system.
https://pixelseo.ai Authentication
All API requests require an API key passed as a header. Create and manage keys in your dashboard.
X-API-Key: px_live_your_key_here API keys start with px_live_. Keep them secret — they carry your credit balance. Keys can be revoked from the dashboard at any time.
POST /api/v1/process-images
Upload one or more images and receive the full SEO package for each. Costs 1 credit per successfully processed image. Uses multipart/form-data.
Form fields
| Field | Type | Required | Description |
|---|---|---|---|
images | File (repeatable) | Yes | Image files to process. Up to 20 per request. JPEG, PNG, WebP, or GIF. Max 5 MB each. |
site_url | string | No | Fallback page URL — used as contentUrl in schema for images without a per-image URL. |
page_urls | string (repeatable) | No | Per-image page URLs, parallel to the images array. Empty string to fall back to site_url. |
provided_names | string (repeatable) | No | Formula mode: pre-built kebab-case filenames, one per image. When provided, Pixel Vision writes alt text and schema only — it does not rename. |
Example request
curl -X POST https://pixelseo.ai/api/v1/process-images \
-H "X-API-Key: px_live_your_key_here" \
-F "[email protected]" \
-F "[email protected]" \
-F "site_url=https://yoursite.com/flooring" \
-F "page_urls=https://yoursite.com/flooring/oak" \
-F "page_urls=" Response
{
"results": [
{
"index": 0,
"original_filename": "product-photo.jpg",
"seo_filename": "red-oak-hardwood-flooring-living-room.webp",
"alt_text": "Red oak hardwood flooring installed in a bright living room",
"name": "Red Oak Hardwood Flooring Living Room",
"description": "Wide-plank red oak hardwood floors with natural grain detail in a sunlit living room setting.",
"schema": {
"@context": "https://schema.org",
"@type": "ImageObject",
"name": "Red Oak Hardwood Flooring Living Room",
"description": "Wide-plank red oak hardwood floors...",
"contentUrl": "https://yoursite.com/flooring/oak",
"encodingFormat": "image/webp"
},
"error": null
}
],
"credits_used": 1,
"credits_remaining": 23,
"total_input_tokens": 2168,
"total_output_tokens": 135
} total_input_tokens and total_output_tokens reflect Pixel Vision usage across the batch — informational only, no additional cost.
POST /api/v1/generate
Generates a new image using Google Imagen and returns the image URL plus the full SEO package. Costs 1 credit per call. Uses application/json.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
prompt_mode | string | No | style, custom, or hybrid. Default: style |
style_slug | string | If mode is style | Style identifier e.g. ancient-egyptian. See gallery for all slugs. |
subject | string | No | What to depict e.g. mountain village at sunset |
custom_prompt | string | If mode is custom or hybrid | Your full image prompt |
orientation | string | No | landscape, portrait, or square. Default: landscape |
output_format | string | No | webp, jpeg, or png. Default: webp |
Example request
curl -X POST https://pixelseo.ai/api/v1/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: px_live_your_key_here" \
-d '{
"prompt_mode": "style",
"style_slug": "impressionism",
"subject": "coastal town at golden hour",
"orientation": "landscape",
"output_format": "webp"
}' Response
{
"generation_id": "7d59d295-d124-400a-aa87-c6d450e955ac",
"image_url": "https://images.pixelseo.ai/gen/user_abc/7d59d295.webp",
"filename": "impressionism-coastal-town-golden-hour-landscape.webp",
"alt_text": "Impressionist painting of a coastal town at golden hour with soft brushstrokes and warm light",
"schema": {
"@context": "https://schema.org",
"@type": "ImageObject",
"name": "Impressionism Coastal Town Golden Hour",
"description": "...",
"contentUrl": "https://images.pixelseo.ai/gen/..."
},
"credits_remaining": 22
} Rate limits
Maximum 10 requests per minute per account. Exceeding this returns a 429 response.
Error responses
Both endpoints use the same error structure:
| Status | Code | Meaning |
|---|---|---|
400 | — | Invalid request — check required fields, file types, and size limits |
401 | — | Missing or invalid API key |
402 | NO_CREDITS | Insufficient credits — purchase more at /pricing |
429 | RATE_LIMITED | Rate limit exceeded — max 10 requests/min |
502 | — | Upstream AI error — retry the request |
For /process-images, individual image failures are returned inline in the results array with "error": "Analysis failed — please try again". Credits are only charged for images that succeed.
Credits & pricing
- 1 credit per image — whether optimizing an uploaded image or generating a new one
- For batch optimization, credits are charged only for images that process successfully
- Credits never expire
- New accounts get 3 free credits — no credit card required
- Credits are purchased as one-time packs — no subscription
The FAQ covers common questions about image SEO, the tools, and billing in more depth.
Read the FAQ →