addedInput schema / properties / after_date / description
Added value: +"Only return photos published on or after this date, formatted YYYY-MM-DD."
addedInput schema / properties / color_name / description
Added value: +"Keep only photos whose dominant color matches one of: red, orange, yellow, green, blue, purple, pink, brown, black, white, gray, teal, beige, gold, navy. Cannot be combined with color_hex."
addedInput schema / properties / cursor / description
Added value: +"Token to fetch the next page. Take `pagination.next_cursor` from a previous response and pass it back here — no need to re-upload the image. See the Pagination guide."
addedInput schema / properties / image_base64 / description
Added value: +"The reference image as base64 bytes, optionally as a `data:` URL. For a client that already holds the bytes; prefer `image_url` when a link exists."
addedInput schema / properties / image_file / additionalProperties
Added value: +false
removedInput schema / properties / image_file / anyOf
Removed value: -[
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
-]
removedInput schema / properties / image_file / default
Removed value: -null
addedInput schema / properties / image_file / description
Added value: +"Filled in by the host when the user uploads an image, not by the caller. Carries the upload's `download_url` and `file_id`."
addedInput schema / properties / image_file / properties
Added value: +{
+ "download_url": {
+ "type": "string"
+ },
+ "file_id": {
+ "type": "string"
+ },
+ "file_name": {
+ "type": "string"
+ },
+ "mime_type": {
+ "type": "string"
+ }
+}
addedInput schema / properties / image_file / required
Added value: +[
+ "download_url",
+ "file_id"
+]
addedInput schema / properties / image_file / type
Added value: +"object"
addedInput schema / properties / image_url / description
Added value: +"Public http(s) URL of the reference image. Reuse the `image_url` of a photo from a previous search result, or any public URL the user provides."
addedInput schema / properties / license_type / description
Added value: +"Keep only photos with these license types: free, cc0. 'free' means the photo can be used freely and attribution is appreciated. Repeat the parameter to pass several."
addedInput schema / properties / orientation / description
Added value: +"Keep only photos with these shapes: landscape, portrait, square. Repeat the parameter to pass several."
addedInput schema / properties / photographer / description
Added value: +"Only return photos from this photographer's exact username."
addedInput schema / properties / q / description
Added value: +"Your search query as a full natural-language sentence describing the scene you want — Pexafy is semantic, so sentences beat keywords. Up to 500 characters. Optional if you provide at least one filter instead. Example: 'an old man sitting at a café table he has visited every morning for thirty years'."
addedInput schema / properties / source / description
Added value: +"Keep only photos from these providers: Unsplash, Pexels, Pixabay, Kaboompics, Burst, StockSnap, Picjumbo, Skitterphoto, NegativeSpace. Repeat the parameter to pass several."
addedInput schema / properties / text_alpha / description
Added value: +"Balance between your text and the image when both are provided, from `0` to `10`. `0` ignores the text (pure visual search), `1.7` (the default) is balanced, and higher values give your words more weight. Has no effect without `q`."
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "properties": {
+ "data": {
+ "items": {
+ "description": "A photo result. Fields returned can be narrowed with the `fields` parameter and may depend on your plan.",
+ "properties": {
+ "alt_description": {
+ "description": "Accessibility-friendly text.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "attribution": {
+ "description": "Ready-to-display credit for the photographer/source.",
+ "properties": {
+ "html": {
+ "description": "HTML attribution snippet.",
+ "type": "string"
+ },
+ "plain": {
+ "description": "Plain-text attribution.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "blur_hash": {
+ "description": "BlurHash placeholder string.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "color_hex": {
+ "description": "Dominant color hex code.",
+ "type": "string"
+ },
+ "color_name": {
+ "description": "Dominant color name.",
+ "type": "string"
+ },
+ "description": {
+ "description": "AI-generated caption.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "height": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "image_url": {
+ "description": "Canonical source image URL.",
+ "format": "uri",
+ "type": "string"
+ },
+ "license_type": {
+ "description": "License type (e.g. `free`).",
+ "type": "string"
+ },
+ "orientation": {
+ "enum": [
+ "landscape",
+ "portrait",
+ "square"
+ ],
+ "type": "string"
+ },
+ "photo_id": {
+ "description": "Unique Pexafy identifier (UUID).",
+ "type": "string"
+ },
+ "photographer_full_name": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "photographer_url": {
+ "format": "uri",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "photographer_username": {
+ "type": "string"
+ },
+ "relevance_score": {
+ "description": "Match score 0–1 (higher is better). Only on search results.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "source": {
+ "description": "Provider (e.g. `Pexels`, `Unsplash`, `Pixabay`).",
+ "type": "string"
+ },
+ "source_description": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "source_image_url": {
+ "description": "URL of the photo's page on the provider.",
+ "format": "uri",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "uploaded_on": {
+ "description": "Publication date (YYYY-MM-DD).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "urls": {
+ "description": "Ready-to-use image links in five sizes.",
+ "properties": {
+ "full": {
+ "format": "uri",
+ "type": "string"
+ },
+ "large": {
+ "format": "uri",
+ "type": "string"
+ },
+ "regular": {
+ "format": "uri",
+ "type": "string"
+ },
+ "small": {
+ "format": "uri",
+ "type": "string"
+ },
+ "thumb": {
+ "format": "uri",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "width": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "error": {
+ "anyOf": [
+ {
+ "properties": {
+ "code": {
+ "description": "Machine-readable error code (e.g. `MISSING_PARAMS`, `PHOTO_NOT_FOUND`).",
+ "type": "string"
+ },
+ "message": {
+ "description": "Human-readable error message.",
+ "type": "string"
+ },
+ "request_id": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "meta": {
+ "properties": {
+ "request_id": {
+ "description": "Unique id for this request (quote it in support tickets).",
+ "type": "string"
+ },
+ "took_ms": {
+ "description": "Server processing time in milliseconds.",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "pagination": {
+ "anyOf": [
+ {
+ "properties": {
+ "has_more": {
+ "description": "Whether another page exists.",
+ "type": "boolean"
+ },
+ "next_cursor": {
+ "description": "Pass back as `cursor` for the next page; `null` when `has_more` is false.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "per_page": {
+ "description": "Number of items per page.",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "success": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "x-fastmcp-top-level-schema": "PhotoListResponse"
+}