Pexels API

Free image and video API providing access to Pexels photo and video library for integration into applications.

OpenAPI Specification

pexels-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Pexels API
  description: |
    The Pexels API provides programmatic access to Pexels' free stock photo
    and video library, plus curated collections. Use it to search photos
    and videos, fetch curated and popular media, and integrate Pexels
    content into apps and websites.
  version: '1.0'
  contact:
    name: Pexels API
    url: https://www.pexels.com/api/
  termsOfService: https://www.pexels.com/terms-of-service/
externalDocs:
  description: Pexels API Documentation
  url: https://www.pexels.com/api/documentation/
servers:
  - url: https://api.pexels.com/v1
    description: Pexels production API
tags:
  - name: Photos
    description: Search, browse, and retrieve photos.
  - name: Videos
    description: Search, browse, and retrieve videos.
  - name: Collections
    description: Browse featured and user-owned collections.
paths:
  /search:
    get:
      operationId: searchPhotos
      summary: Search Photos
      description: Search the Pexels photo library by keyword.
      tags:
        - Photos
      security:
        - apiKeyAuth: []
      parameters:
        - in: query
          name: query
          required: true
          schema:
            type: string
          description: Search keyword such as "Ocean" or "Tigers".
        - in: query
          name: orientation
          schema:
            type: string
            enum: [landscape, portrait, square]
        - in: query
          name: size
          schema:
            type: string
            enum: [large, medium, small]
        - in: query
          name: color
          schema:
            type: string
        - in: query
          name: locale
          schema:
            type: string
        - in: query
          name: page
          schema:
            type: integer
            default: 1
        - in: query
          name: per_page
          schema:
            type: integer
            default: 15
            maximum: 80
      responses:
        '200':
          description: Photo search results.
  /curated:
    get:
      operationId: getCuratedPhotos
      summary: Curated Photos
      description: Returns real-time curated photos selected by Pexels.
      tags:
        - Photos
      security:
        - apiKeyAuth: []
      parameters:
        - in: query
          name: page
          schema:
            type: integer
        - in: query
          name: per_page
          schema:
            type: integer
            maximum: 80
      responses:
        '200':
          description: Curated photos.
  /photos/{id}:
    get:
      operationId: getPhoto
      summary: Get Photo
      description: Retrieve a specific photo by ID.
      tags:
        - Photos
      security:
        - apiKeyAuth: []
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: A single photo resource.
  /videos/search:
    get:
      operationId: searchVideos
      summary: Search Videos
      description: Search the Pexels video library by keyword.
      tags:
        - Videos
      security:
        - apiKeyAuth: []
      parameters:
        - in: query
          name: query
          required: true
          schema:
            type: string
        - in: query
          name: orientation
          schema:
            type: string
            enum: [landscape, portrait, square]
        - in: query
          name: size
          schema:
            type: string
            enum: [large, medium, small]
        - in: query
          name: locale
          schema:
            type: string
        - in: query
          name: page
          schema:
            type: integer
        - in: query
          name: per_page
          schema:
            type: integer
            maximum: 80
      responses:
        '200':
          description: Video search results.
  /videos/popular:
    get:
      operationId: getPopularVideos
      summary: Popular Videos
      description: Returns currently trending videos.
      tags:
        - Videos
      security:
        - apiKeyAuth: []
      parameters:
        - in: query
          name: min_width
          schema:
            type: integer
        - in: query
          name: min_height
          schema:
            type: integer
        - in: query
          name: min_duration
          schema:
            type: integer
        - in: query
          name: max_duration
          schema:
            type: integer
        - in: query
          name: page
          schema:
            type: integer
        - in: query
          name: per_page
          schema:
            type: integer
            maximum: 80
      responses:
        '200':
          description: Popular videos.
  /videos/videos/{id}:
    get:
      operationId: getVideo
      summary: Get Video
      description: Retrieve a specific video by ID.
      tags:
        - Videos
      security:
        - apiKeyAuth: []
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: A single video resource.
  /collections/featured:
    get:
      operationId: getFeaturedCollections
      summary: Featured Collections
      description: Returns curated public collections.
      tags:
        - Collections
      security:
        - apiKeyAuth: []
      parameters:
        - in: query
          name: page
          schema:
            type: integer
        - in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: Featured collections.
  /collections:
    get:
      operationId: getMyCollections
      summary: My Collections
      description: Returns the authenticated user's collections.
      tags:
        - Collections
      security:
        - apiKeyAuth: []
      parameters:
        - in: query
          name: page
          schema:
            type: integer
        - in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: User collections.
  /collections/{id}:
    get:
      operationId: getCollectionMedia
      summary: Collection Media
      description: Returns photos and videos within a collection.
      tags:
        - Collections
      security:
        - apiKeyAuth: []
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
        - in: query
          name: type
          schema:
            type: string
            enum: [photos, videos]
        - in: query
          name: sort
          schema:
            type: string
        - in: query
          name: page
          schema:
            type: integer
        - in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: Collection contents.
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: |
        Pexels uses an API-key in the `Authorization` request header.
        Send your key as `Authorization: YOUR_API_KEY` on every request.