{"id":23471,"library":"crowdin-api-client","title":"Crowdin API Client","description":"Python client library for the Crowdin API v2. Currently at version 1.26.0, it provides a convenient interface for managing translations, files, projects, and reports. Released under MIT license, with regular updates.","status":"active","version":"1.26.0","language":"python","source_language":"en","source_url":"https://github.com/crowdin/crowdin-api-client-python","tags":["crowdin","translation","api","client","localization"],"install":[{"cmd":"pip install crowdin-api-client","lang":"bash","label":"Install via pip"}],"dependencies":[],"imports":[{"note":"The main package is 'crowdin_api'. There is no common wrong import.","wrong":"","symbol":"crowdin_api","correct":"import crowdin_api"},{"note":"Old pattern used before v1.0.0; changed to snake_case package.","wrong":"from crowdin.client import CrowdinClient","symbol":"CrowdinClient","correct":"from crowdin_api import CrowdinClient"}],"quickstart":{"code":"import os\nfrom crowdin_api import CrowdinClient\n\nclient = CrowdinClient(\n    token=os.environ.get('CROWDIN_TOKEN', ''),\n    organization=os.environ.get('CROWDIN_ORGANIZATION', '')\n)\nprint(client.projects.list_projects())","lang":"python","description":"Initialize client with API token and optional organization domain."},"warnings":[{"fix":"Pass organization='your-domain' (without .api.crowdin.com) when creating the client.","message":"Using an organization token? You must pass 'organization' to CrowdinClient. Without it, you'll get 401 errors if your account belongs to an organization.","severity":"gotcha","affected_versions":"all"},{"fix":"Use the .all() method on list endpoints, e.g., client.projects.list_projects().all()","message":"Many API responses are paginated. Forgetting to handle pagination leads to incomplete data.","severity":"gotcha","affected_versions":"all"},{"fix":"Replace storage.change() and storage.update() with storage.add_storage() and storage.update_or_restore_storage().","message":"In v1.14.0, the 'change' and 'update' methods for storage were removed. Use 'add_storage' and 'update_or_restore_storage'.","severity":"breaking","affected_versions":">=1.14.0"},{"fix":"Use the default User-Agent or override via CrowdinClient(user_agent='...').","message":"The deprecated 'User-Agent' header style was changed. If you relied on the old format, you may need to update custom middleware.","severity":"deprecated","affected_versions":">=1.10.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Ensure CROWDIN_TOKEN is set, and if using organization, set CROWDIN_ORGANIZATION and pass it to CrowdinClient.","cause":"Missing or invalid token, or missing organization domain for org tokens.","error":"crowdin_api.exceptions.CrowdinApiError: 401 Client Error: Unauthorized for url"},{"fix":"Check that the project ID exists and your token has access to it.","cause":"Wrong project ID or file ID, or insufficient permissions.","error":"crowdin_api.exceptions.CrowdinApiError: 404 Not Found"},{"fix":"Provide a token: client = CrowdinClient(token='your_token')","cause":"CrowdinClient requires 'token' as a parameter.","error":"TypeError: __init__() missing 1 required positional argument: 'token'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}