https://github.com/iwatkot/pypexel
Async Object-oriented Python SDK for the Pexels API.
https://github.com/iwatkot/pypexel
api async pexels pexels-api pexels-downloader photos videos
Last synced: 11 months ago
JSON representation
Async Object-oriented Python SDK for the Pexels API.
- Host: GitHub
- URL: https://github.com/iwatkot/pypexel
- Owner: iwatkot
- License: mit
- Created: 2025-07-09T20:04:40.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-10T00:43:00.000Z (12 months ago)
- Last Synced: 2025-07-10T04:27:29.047Z (12 months ago)
- Topics: api, async, pexels, pexels-api, pexels-downloader, photos, videos
- Language: Python
- Homepage:
- Size: 49.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
Async Object-oriented Python SDK for the Pexels API.
Overview •
Quick Start •
Examples •
Bugs and Feature Requests •
PyPI
[](https://github.com/iwatkot/pypexel/releases)
[](https://pypi.org/project/pypexel/)
[](https://github.com/iwatkot/pypexel/issues)
[](https://github.com/iwatkot/pypexel/actions)
[](https://mypy-lang.org/)
[](https://pypi.org/project/pypexel/)
[](https://pypi.org/project/pypexel/)
[](https://codecov.io/github/iwatkot/pypexel)
## Overview
This SDK is designed to interact with the [Pexels API](https://www.pexels.com/api/) in a more object-oriented way. It provides asynchronous methods to interact with the API. The SDK is designed to be as simple as possible to use, while still providing a lot of flexibility and uses `Pydantic` models to validate the data.
Used dependencies:
- `httpx` for asynchronous API
- `pydantic` for models
Supported Python versions:
- 3.11
- 3.12
## Quick Start
After installing the SDK, you can create a new instance of the API. When creating a new instance, you can either use environment variables or pass the credentials directly. It's strongly recommended to use environment variables to store the API credentials.
### Installation
```bash
pip install pypexel
```
### Create a new instance of the API
It's recommended to use an environment variable to store the API credentials:
```python
import os
os.environ["PEXELS_API_KEY"] = "your-api-key"
```
To work asynchronously:
```python
import pypexel as pex
# Using environment variables:
api = pex.AsyncApi.from_env()
# Or using the credentials directly:
api = pex.AsyncApi("your-api-key")
```
## Examples
You'll find detailed docs with usage examples for both APIs and for used models in the corresponding package directories:
- [Asynchronous API](pypexel/async_api/README.md)
- [Models](pypexel/models/README.md)
In this section, you'll find some examples of how to use the SDK. You can also check out the [demo.py](demo.py) file in the root directory for more examples.
### Search for photos
```python
import asyncio
import os
import pypexel as pex
os.environ["PEXELS_API_KEY"] = "your-api-key"
api = pex.AsyncApi.from_env()
async def main():
# Search for photos with the query "nature"
photos = await api.photos.search("nature", limit=10)
# Print the first photo's URL
if photos:
print(photos[0].src.original)
else:
print("No photos found.")
asyncio.run(main())
```
### Search for videos
```python
import asyncio
import os
import pypexel as pex
os.environ["PEXELS_API_KEY"] = "your-api-key"
api = pex.AsyncApi.from_env()
async def main():
# Search for videos with the query "nature"
videos = await api.videos.search("nature", limit=10)
# Print the first video URL
if videos:
print(videos[0].video_files[0].link)
else:
print("No videos found.")
asyncio.run(main())
```
## Bugs and Feature Requests
If you find a bug or have a feature request, please open an issue on the GitHub repository.
You're also welcome to contribute to the project by opening a pull request.