Skip to main content

Unofficial Claude API For Python

The UNOFFICIAL free API for Anthropic's Claude LLM.

Background

Claude is Anthropic's LLM app (similar to ChatGPT). This library allows you to use the API (for free) and interact with it in your python projects.

Implemented actions:

The Unofficial Claude API is under active development. The following endpoints are usable in some capacity:

  • Getting organizations you're in
  • Getting conversations you're in
  • Starting a conversation
  • Sending a message and receiving a response
  • Delete a conversation
  • Create an attachment from a file
  • Send attachments
  • getting message history

Note that the api is synchronous.

TODO features

  • Tests
  • Fixing models OTHER than claude_2
  • asynchronous mode
  • Better caching
  • cleaner errors and passing these up to users

This project is under active development and is extremely unstable, so there are no guarantees it will work for you. If you find a bug or you think it should work in a scenario where it doesn't, file an issue.

Usage

Step 1

Install the library using the following:

pip install claude-api-py

If that doesn't work, you can install directly from this github repository:

pip install git+git://github.com/AshwinPathi/claude-api-py.git

There is one requirement as of now:

Step 2

Get a sessionKey from the Claude website. You will need this to start the bot. Ideally also have a user agent of the computer you use to access claude.

You can get this information by logging into https://claude.ai/chats and doing the following:

  1. open inspect element (f12 on chrome)
  2. On the top bar, go to the Application tab.
  3. Under Storage, go to Cookies.
  4. look for a cookie called https://claude.ai, click it.
  5. click the sessionKey field, and copy the session key down. It should begin with sk-ant-sid01...

Step 3

Use the bot. You can see an example at example.py.

Examples:

Importing the necessary libraries

# The ClaudeClient is the raw API that gives you access to all organization and conversation level API calls
# with a simple python interface. However, you have to pass organization_uuid and conversation_uuid everywhere, so
# its not ideal if you want a simple to use API.
from claude import claude_client

# The ClaudeWrapper takes in a claude client instance and allows you to use a single organization and conversation
# context. This allows you to use the API more ergonomically.
from claude import claude_wrapper

Create the client and wrapper

client = claude_client.ClaudeClient(SESSION_KEY)

organizations = client.get_organizations()
# You can omit passing in the organization uuid and the wrapper will assume
# you will use the first organization instead.
claude_obj = claude_wrapper.ClaudeWrapper(client, organization_uuid=organizations[0]['uuid'])

Starting a new conversation

new_conversation_data = claude_obj.start_new_conversation("New Conversation", "Hi Claude!")
conversation_uuid = new_conversation_data['uuid']
# You can get the response from the initial message you sent with:
initial_response = new_conversation_data['response']
# You can get the title of the new chat you created with this:
chat_title = new_conversation_data['title']

Send a message (passing in the client uuid)

conversation_uuid = claude_obj.get_conversations()[0]['uuid']
response = claude_obj.send_message("How are you doing today!", conversation_uuid=conversation_uuid)

Setting a conversation context and sending a message

conversation_uuid = claude_obj.get_conversations()[0]['uuid']
# This is so you don't have to constantly pass in conversation uuid on every call that requires it.
# anywhere that has an argument conversation_uuid=X can be omitted if you set the conversation context.
claude_obj.set_conversation_context(conversation_uuid)

response = claude_obj.send_message("How are you doing today!")
response = claude_obj.send_message("Who won the league of legends worlds 2022 finals?")

Sending an attachment

# This generates an attachment in the right format
attachment = claude_obj.get_attachment('example_attachment.txt')
response = claude_obj.send_message("Hi Claude, what does this attachment say?", attachments=[attachment],
                                    conversation_uuid = conversation_uuid)

Deleting a conversation

deleted = claude_obj.delete_conversation(conversation_uuid)

Deleting all conversations in an organization

failed_deletions = claude_obj.delete_all_conversations()
assert len(failed_deletions) == 0

Renaming a conversation

conversation = claude_obj.rename_conversation("New name", conversation_uuid = conversation_uuid)

Get conversation history

conversation_history = claude_obj.get_conversation_info(conversation_uuid = conversation_uuid)

Disclaimer

This library is for purely educational purposes and is UNOFFICIAL. I am not responsible if your account gets banned. If you would like to use the actual API, go to anthropic website.

Release files for claude-api-py 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for claude-api-py 0.0.5
File Size Uploaded
claude-api-py-0.0.5.tar.gz 15.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for claude-api-py 0.0.5
File Interpreter ABI Platform
claude_api_py-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 30.5 kB

Release files / claude-api-py-0.0.5.tar.gz

Download URL claude-api-py-0.0.5.tar.gz
Size 15.1 kB
Tags Source
SHA-256 checksum
How to use checksums
abfdf9d26c7ec4c58c9f4adceafdb9fa6c695cbb673262cb02a1ac0f5943f02b
BLAKE2b-256 checksum
How to use checksums
20b33e30c9593f2f661bcd79284f763148bf39e4c3bad84cd712d63601b6374e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.7

Release files / claude_api_py-0.0.5-py3-none-any.whl

Download URL claude_api_py-0.0.5-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fcfea43aba7d77ba5c89b9edd11ade16aa684fc03c93f2edf3c1837a8add1ba3
BLAKE2b-256 checksum
How to use checksums
db2c5ef876a09ba07ab7a99904a9a0d98b60a568aa4d2b3590fd51dcb96cdea1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page