The Credal Python Library provides convenient access to the Credal API from applications written in Python.
Docs for the API endpoints available through the SDK can be found here.
A full reference of the SDK is available here.
pip install --upgrade credal
from credal.client import CredalApi
client = CredalApi(
api_key="YOUR_API_KEY",
)
client.copilots.send_message(
message="Is Credal SOC 2 compliant?",
user_email="[email protected]",
)
client = CredalApi(
api_key="YOUR_API_KEY",
base_url="https://<custom-domain>/api",
)
from credal.client import AsyncCredalApi
client = AsyncCredalApi(
api_key="YOUR_API_KEY",
)
All errors thrown by the SDK will be subclasses of ApiError
.
import credal
...
try:
client.copilots.send_message(...)
except credal.core.ApiError as e: # Handle all errors
print(e.status_code)
print(e.body)
By default, requests time out after 60 seconds. You can configure this with a timeout option at the client or request level.
from credal.client import CredalApi
client = CredalApi(
...,
# All timeouts are 20 seconds
timeout=20.0,
)
# Override timeout for a specific method
client.copilots.send_message(..., {
timeout_in_seconds=20.0
})
The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long as the request is deemed retriable and the number of retry attempts has not grown larger than the configured retry limit (default: 2).
A request is deemed retriable when any of the following HTTP status codes is returned:
Use the max_retries
request option to configure this behavior.
client.copilots.send_message(..., {
max_retries=1
})
You can override the httpx client to customize it for your use-case. Some common use-cases include support for proxies and transports.
import httpx
from credal.client import CredalApi
client = CredalApi(...,
http_client=httpx.Client(
proxies="http://my.test.proxy.example.com",
transport=httpx.HTTPTransport(local_address="0.0.0.0"),
),
)
This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning the package version to a specific version. This way, you can install the same version each time without breaking changes.