# Skimly Python SDK
Official Python SDK for Skimly - the AI token optimization platform.
## Installation
```bash
pip install skimly
```
## Quick Start
```python
from skimly import SkimlyClient
# Initialize client
client = SkimlyClient.from_env()
# Chat with OpenAI
response = await client.chat({
"provider": "openai",
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello!"}]
})
# Upload large content once
blob = await client.create_blob("Large document content...")
print(blob["blob_id"])
# Avoid re-uploading identical content
blob = await client.create_blob_if_new("Large document content...")
```
## API Reference
### `SkimlyClient(key, base?, timeout_ms?, retries?)`
Creates a new Skimly client instance.
### `SkimlyClient.from_env()`
Creates a client from environment variables:
- `SKIMLY_KEY` - Your Skimly API key
- `SKIMLY_BASE` - Base URL (defaults to http://localhost:3000)
### `client.chat(req)`
Send a chat request. Request object should include:
- `provider` - "openai" or "anthropic"
- `model` - Model name
- `messages` - Array of message objects
### `client.create_blob(content, mime_type?)`
Upload large content once. Returns `{blob_id}`.
### `client.create_blob_if_new(content, mime_type?)`
Upload content only if it hasn't been uploaded before. Returns `{blob_id}`.
Raw data
{
"_id": null,
"home_page": null,
"name": "skimly",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "ai, anthropic, gateway, openai, sdk, skimly",
"author": null,
"author_email": "Skimly <dev@skimly.ai>",
"download_url": "https://files.pythonhosted.org/packages/08/26/9922018bf3d95738d96995f48c6117a3cbe20747564fcf87007ac981f579/skimly-0.1.3.tar.gz",
"platform": null,
"description": "# Skimly Python SDK\n\nOfficial Python SDK for Skimly - the AI token optimization platform.\n\n## Installation\n\n```bash\npip install skimly\n```\n\n## Quick Start\n\n```python\nfrom skimly import SkimlyClient\n\n# Initialize client\nclient = SkimlyClient.from_env()\n\n# Chat with OpenAI\nresponse = await client.chat({\n \"provider\": \"openai\",\n \"model\": \"gpt-4o-mini\",\n \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]\n})\n\n# Upload large content once\nblob = await client.create_blob(\"Large document content...\")\nprint(blob[\"blob_id\"])\n\n# Avoid re-uploading identical content\nblob = await client.create_blob_if_new(\"Large document content...\")\n```\n\n## API Reference\n\n### `SkimlyClient(key, base?, timeout_ms?, retries?)`\n\nCreates a new Skimly client instance.\n\n### `SkimlyClient.from_env()`\n\nCreates a client from environment variables:\n- `SKIMLY_KEY` - Your Skimly API key\n- `SKIMLY_BASE` - Base URL (defaults to http://localhost:3000)\n\n### `client.chat(req)`\n\nSend a chat request. Request object should include:\n- `provider` - \"openai\" or \"anthropic\"\n- `model` - Model name\n- `messages` - Array of message objects\n\n### `client.create_blob(content, mime_type?)`\n\nUpload large content once. Returns `{blob_id}`.\n\n### `client.create_blob_if_new(content, mime_type?)`\n\nUpload content only if it hasn't been uploaded before. Returns `{blob_id}`.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Skimly Python SDK",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://skimly.ai",
"Issues": "https://github.com/skimly/skimly/issues"
},
"split_keywords": [
"ai",
" anthropic",
" gateway",
" openai",
" sdk",
" skimly"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "8c61f1de7c01c6dbbae9d0792c66116006345a803b9d1690f53ba2a4ce648c49",
"md5": "b5dc0ce0f222c084d8d918c29e4dbf0b",
"sha256": "de27dc5a7452dbd5dbcd1c64e5132e25c04c66aea4c88cf91ac8d2c7e89735d6"
},
"downloads": -1,
"filename": "skimly-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b5dc0ce0f222c084d8d918c29e4dbf0b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 5498,
"upload_time": "2025-08-18T09:22:53",
"upload_time_iso_8601": "2025-08-18T09:22:53.744858Z",
"url": "https://files.pythonhosted.org/packages/8c/61/f1de7c01c6dbbae9d0792c66116006345a803b9d1690f53ba2a4ce648c49/skimly-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "08269922018bf3d95738d96995f48c6117a3cbe20747564fcf87007ac981f579",
"md5": "62bfdae7d0353b8a370b64150395e464",
"sha256": "377a9b26a1405d608fbb9fab8018de1be63cea8583838693d734edb8f45850cf"
},
"downloads": -1,
"filename": "skimly-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "62bfdae7d0353b8a370b64150395e464",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 8539,
"upload_time": "2025-08-18T09:22:54",
"upload_time_iso_8601": "2025-08-18T09:22:54.541955Z",
"url": "https://files.pythonhosted.org/packages/08/26/9922018bf3d95738d96995f48c6117a3cbe20747564fcf87007ac981f579/skimly-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-18 09:22:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "skimly",
"github_project": "skimly",
"github_not_found": true,
"lcname": "skimly"
}