{
  "service": "pexels",
  "displayName": "Pexels",
  "categories": [
    "Design & Media"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "PEXELS_API_KEY",
      "description": "Pexels API key sent in the Authorization header for api.pexels.com requests. Get it from https://www.pexels.com/api/.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.pexels.com",
  "actions": [
    {
      "id": "pexels.collection_media",
      "service": "pexels",
      "name": "collection_media",
      "description": "Retrieve photos and videos from a Pexels collection with pagination, type, and sort controls.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "collectionId": {
            "type": "string",
            "minLength": 1,
            "description": "The Pexels collection identifier."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          },
          "type": {
            "type": "string",
            "enum": [
              "photos",
              "videos"
            ],
            "description": "Media type filter."
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Collection media sort order."
          }
        },
        "additionalProperties": false,
        "required": [
          "collectionId"
        ],
        "description": "Input parameters for retrieving media in a Pexels collection."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the collection returned by Pexels."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          },
          "totalResults": {
            "type": "integer",
            "description": "The total number of matching media items."
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A photo or video item returned by the collection media API."
            },
            "description": "The mixed photo and video items returned by the collection."
          },
          "nextPage": {
            "type": "string",
            "description": "The URL for the next page of media items."
          },
          "prevPage": {
            "type": "string",
            "description": "The URL for the previous page of media items."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "page",
          "perPage",
          "totalResults",
          "media"
        ],
        "description": "A paginated Pexels collection media response."
      }
    },
    {
      "id": "pexels.curated_photos",
      "service": "pexels",
      "name": "curated_photos",
      "description": "Retrieve the current curated photo feed from Pexels with pagination controls.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving curated photos from Pexels."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The Pexels URL representing the current photo result page."
          },
          "page": {
            "type": "integer",
            "description": "The current page number returned by Pexels."
          },
          "perPage": {
            "type": "integer",
            "description": "The number of photos returned per page."
          },
          "totalResults": {
            "type": "integer",
            "description": "The total number of matching photos."
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A normalized Pexels photo resource."
            },
            "description": "The photo resources returned by the request."
          },
          "nextPage": {
            "type": "string",
            "description": "The URL for the next page of photos."
          },
          "prevPage": {
            "type": "string",
            "description": "The URL for the previous page of photos."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "page",
          "perPage",
          "totalResults",
          "photos"
        ],
        "description": "A paginated Pexels photo listing response."
      }
    },
    {
      "id": "pexels.featured_collections",
      "service": "pexels",
      "name": "featured_collections",
      "description": "Retrieve featured Pexels collections with pagination controls.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving featured Pexels collections."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          },
          "totalResults": {
            "type": "integer",
            "description": "The total number of matching collections."
          },
          "collections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Pexels collection."
            },
            "description": "Collections returned by Pexels."
          },
          "nextPage": {
            "type": "string",
            "description": "The URL for the next page of collections."
          },
          "prevPage": {
            "type": "string",
            "description": "The URL for the previous page of collections."
          }
        },
        "additionalProperties": false,
        "required": [
          "page",
          "perPage",
          "totalResults",
          "collections"
        ],
        "description": "A paginated Pexels collection response."
      }
    },
    {
      "id": "pexels.get_photo",
      "service": "pexels",
      "name": "get_photo",
      "description": "Retrieve the full metadata for a single Pexels photo by photo id.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "photoId": {
            "type": "integer",
            "minimum": 1,
            "description": "The unique identifier of the photo to retrieve."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a single Pexels photo."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A normalized Pexels photo resource."
      }
    },
    {
      "id": "pexels.get_video",
      "service": "pexels",
      "name": "get_video",
      "description": "Retrieve the full metadata for a single Pexels video by video id.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "integer",
            "minimum": 1,
            "description": "The unique identifier of the video to retrieve."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a single Pexels video."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A normalized Pexels video resource."
      }
    },
    {
      "id": "pexels.my_collections",
      "service": "pexels",
      "name": "my_collections",
      "description": "Retrieve collections owned by the authenticated Pexels account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving authenticated Pexels collections."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          },
          "totalResults": {
            "type": "integer",
            "description": "The total number of matching collections."
          },
          "collections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Pexels collection."
            },
            "description": "Collections returned by Pexels."
          },
          "nextPage": {
            "type": "string",
            "description": "The URL for the next page of collections."
          },
          "prevPage": {
            "type": "string",
            "description": "The URL for the previous page of collections."
          }
        },
        "additionalProperties": false,
        "required": [
          "page",
          "perPage",
          "totalResults",
          "collections"
        ],
        "description": "A paginated Pexels collection response."
      }
    },
    {
      "id": "pexels.popular_videos",
      "service": "pexels",
      "name": "popular_videos",
      "description": "Retrieve popular Pexels videos with optional dimension, duration, and pagination filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          },
          "minWidth": {
            "type": "integer",
            "minimum": 1,
            "description": "Minimum video width in pixels."
          },
          "minHeight": {
            "type": "integer",
            "minimum": 1,
            "description": "Minimum video height in pixels."
          },
          "minDuration": {
            "type": "integer",
            "minimum": 1,
            "description": "Minimum video duration in seconds."
          },
          "maxDuration": {
            "type": "integer",
            "minimum": 1,
            "description": "Maximum video duration in seconds."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving popular Pexels videos."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The Pexels URL representing the current video result page."
          },
          "page": {
            "type": "integer",
            "description": "The current page number returned by Pexels."
          },
          "perPage": {
            "type": "integer",
            "description": "The number of videos returned per page."
          },
          "totalResults": {
            "type": "integer",
            "description": "The total number of matching videos."
          },
          "videos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A normalized Pexels video resource."
            },
            "description": "The video resources returned by the request."
          },
          "nextPage": {
            "type": "string",
            "description": "The URL for the next page of videos."
          },
          "prevPage": {
            "type": "string",
            "description": "The URL for the previous page of videos."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "page",
          "perPage",
          "totalResults",
          "videos"
        ],
        "description": "A paginated Pexels video listing response."
      }
    },
    {
      "id": "pexels.search_photos",
      "service": "pexels",
      "name": "search_photos",
      "description": "Search Pexels photos by query with optional orientation, size, color, locale, and pagination filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The search query used to find matching photos on Pexels."
          },
          "orientation": {
            "type": "string",
            "enum": [
              "landscape",
              "portrait",
              "square"
            ],
            "description": "Photo orientation filter."
          },
          "size": {
            "type": "string",
            "enum": [
              "large",
              "medium",
              "small"
            ],
            "description": "Photo size filter."
          },
          "color": {
            "type": "string",
            "minLength": 1,
            "description": "The color filter to apply, such as a named color or hexadecimal code."
          },
          "locale": {
            "type": "string",
            "minLength": 1,
            "description": "The locale to use for the photo search, such as en-US or pt-BR."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          }
        },
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "description": "Input parameters for searching photos on Pexels."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The Pexels URL representing the current photo result page."
          },
          "page": {
            "type": "integer",
            "description": "The current page number returned by Pexels."
          },
          "perPage": {
            "type": "integer",
            "description": "The number of photos returned per page."
          },
          "totalResults": {
            "type": "integer",
            "description": "The total number of matching photos."
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A normalized Pexels photo resource."
            },
            "description": "The photo resources returned by the request."
          },
          "nextPage": {
            "type": "string",
            "description": "The URL for the next page of photos."
          },
          "prevPage": {
            "type": "string",
            "description": "The URL for the previous page of photos."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "page",
          "perPage",
          "totalResults",
          "photos"
        ],
        "description": "A paginated Pexels photo listing response."
      }
    },
    {
      "id": "pexels.search_videos",
      "service": "pexels",
      "name": "search_videos",
      "description": "Search Pexels videos by query with optional orientation, size, locale, and pagination filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The search query used to find matching videos on Pexels."
          },
          "orientation": {
            "type": "string",
            "enum": [
              "landscape",
              "portrait",
              "square"
            ],
            "description": "Video orientation filter."
          },
          "size": {
            "type": "string",
            "enum": [
              "large",
              "medium",
              "small"
            ],
            "description": "Video size filter."
          },
          "locale": {
            "type": "string",
            "minLength": 1,
            "description": "The locale to use for the video search, such as en-US or pt-BR."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of results per page."
          }
        },
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "description": "Input parameters for searching videos on Pexels."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The Pexels URL representing the current video result page."
          },
          "page": {
            "type": "integer",
            "description": "The current page number returned by Pexels."
          },
          "perPage": {
            "type": "integer",
            "description": "The number of videos returned per page."
          },
          "totalResults": {
            "type": "integer",
            "description": "The total number of matching videos."
          },
          "videos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A normalized Pexels video resource."
            },
            "description": "The video resources returned by the request."
          },
          "nextPage": {
            "type": "string",
            "description": "The URL for the next page of videos."
          },
          "prevPage": {
            "type": "string",
            "description": "The URL for the previous page of videos."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "page",
          "perPage",
          "totalResults",
          "videos"
        ],
        "description": "A paginated Pexels video listing response."
      }
    }
  ]
}
