Strapi Client
Interact with Strapi from Python using the REST API
Install
pip install strapi-client
Documentation
Examples
Quick start (sync version):
from strapi_client import StrapiClient
with StrapiClient(base_url='YOUR_STRAPI_URL', token='YOUR_STRAPI_TOKEN') as client:
# await strapi.authorize(identifier='user_identifier', password='user_password') # Optional
users = client.get_documents('users', filters={'username': {'$eq': 'Pavel'}})
user_id = users.data[0]['documentId']
client.update_document('users', user_id, data={'username': 'Mark'})
Quick start (async version):
import asyncio
from strapi_client import StrapiClientAsync
async def main():
async with StrapiClientAsync(base_url='YOUR_STRAPI_URL', token='YOUR_STRAPI_TOKEN') as client:
# await strapi.authorize(identifier='user_identifier', password='user_password') # Optional
users = await client.get_documents('users', filters={'username': {'$eq': 'Pavel'}})
user_id = users.data[0]['documentId']
await client.update_document('users', user_id, data={'username': 'Mark'})
asyncio.run(main())
Quick start with ORM (experimental)
Relations and upserts are supported in experimental mode.
import asyncio
from strapi_client import StrapiClientAsync, ActiveDocument, DocumentField
class User(ActiveDocument):
username: str = DocumentField(unique=True)
first_name: str
class Session(ActiveDocument):
uid: str = DocumentField(unique=True)
user: User | None = DocumentField(default=None, relation=True)
async def main():
async with StrapiClientAsync(base_url='YOUR_STRAPI_URL', token='YOUR_STRAPI_TOKEN') as client:
# Update existing document
user1 = await User.get_document(client, document_id='YOUR_DOCUMENT_ID')
user1.first_name = 'Mark'
await user1.update_document(client)
# Create or update document with relation
session1 = await Session(uid='123', user=user1).upsert_document(client)
await session1.refresh(client) # populate fields from Strapi
# Create and delete document
user2 = await User(username='pavel', first_name='Pavel').create_document(client)
await user2.delete_document(client)
asyncio.run(main())
Development
Create new release
Push changes to 'main' branch following Conventional Commits.
Update documentation
docs
folder is being updated automatically by GitHub Actions when source files are changed.