Kwork API — Python Client¶
Unofficial Python client for Kwork.ru API.
Installation¶
pip install kwork-api
Or with UV:
uv add kwork-api
Quick Start¶
Login with credentials¶
from kwork_api import KworkClient
# Authenticate
client = await KworkClient.login("username", "password")
# Get catalog
catalog = await client.catalog.get_list(page=1)
# Get projects
projects = await client.projects.get_list(page=1)
# Close when done
await client.close()
Using context manager¶
async with await KworkClient.login("username", "password") as client:
catalog = await client.catalog.get_list(page=1)
# Client automatically closes
Save and restore session¶
# Save credentials after login
client = await KworkClient.login("username", "password")
# Option 1: Save token only
token = client.token
# Option 2: Save full credentials (token + cookies)
creds = client.credentials
import json
with open("session.json", "w") as f:
json.dump(creds, f)
# Later, restore session
client = KworkClient(token=token)
# or
client = KworkClient(**creds)
user_info = await client.user.get_info()
API Overview¶
Catalog API¶
client.catalog.get_list()— Get kworks catalogclient.catalog.get_details(kwork_id)— Get kwork details
Projects API¶
client.projects.get_list()— Get freelance projectsclient.projects.get_payer_orders()— Your orders as customerclient.projects.get_worker_orders()— Your orders as performer
User API¶
client.user.get_info()— Get user profileclient.user.get_reviews()— Get user reviewsclient.user.get_favorite_kworks()— Get favorite kworks
Settings & Preferences¶
client.get_wants()— User preferencesclient.get_kworks_status()— Kworks statusclient.update_settings()— Update settingsclient.go_offline()— Set offline status
See API Reference for full documentation.
Error Handling¶
from kwork_api import KworkError, KworkAuthError, KworkApiError
try:
await client.catalog.get_list()
except KworkAuthError:
print("Invalid credentials")
except KworkApiError as e:
print(f"API error: {e.status_code}")
except KworkError as e:
print(f"General error: {e.message}")