π A Python library for interacting with the Grok 3 API without requiring login or manual cookie input. Perfect for out-of-the-box use.
Grok3API is a powerful and user-friendly unofficial tool for interacting with Grok models (including Grok3), allowing you to send requests, receive text responses, and, most excitingly, generated images β all with automatic cookie management! π¨β¨ The project is designed with simplicity and automation in mind, so you can focus on creativity rather than technical details.
-
π Improved code block handling Added automatic transformation of nested blocks
<xaiArtifact contentType="text/...">...</xaiArtifact>
into standard Markdown code blocks with language indication. -
βοΈ The feature can be disabled by setting the
auto_transform_code_blocks=False
parameter when creatingGrokClient
.
- π Automatic cookie retrieval via browser with Cloudflare bypass β no manual setup required!
- πΌοΈ Convenient retrieval of generated images with the
save_to
method, enabling one-click saving. - π§ Flexible request customization: model selection, image generation control, attachment support, and more.
- π¦ Attachment support: send files and images along with requests.
- π οΈ Error handling: the client automatically resolves cookie issues and retries requests if something goes wrong.
- π€ Example Telegram bot (
grok3api
+aiogram
)
To start using GrokClient, install the required dependencies. Itβs simple:
pip install grok3api
β οΈ Important: Ensure Google Chrome is installed, asundetected_chromedriver
relies on it.
After installation, youβre ready to go! π
π Minimal working example:
from grok3api.client import GrokClient
client = GrokClient()
answer = client.ask("Hi! How are you?")
print(answer.modelResponse.message)
Hereβs a complete example of sending a request and saving a generated image:
from grok3api.client import GrokClient
# Create a client (cookies are automatically retrieved if not provided)
client = GrokClient()
# Create a request
message = "Create an image of a ship"
# Send the request
result = client.ask(message=message,
images="C:\\Folder\\photo1_to_grok.jpg") # You can send an image to Grok
print("Grok's response:", result.modelResponse.message)
# Save the first image, if available
if result.modelResponse.generatedImages:
result.modelResponse.generatedImages[0].save_to("ship.jpg")
print("Image saved as ship.jpg! π")
This code:
- Creates a client β automatically retrieves cookies if none are provided.
- Sends a request to generate an image.
- Saves the image to the file
ship.jpg
.
π What will we see?
Grok will generate an image of a ship, for example, something like this:
πΉ Or, for instance, if you request "A gopher on Elbrus":
π‘ Cool feature: You donβt need to manually fetch cookies β the client handles it for you!
The GrokClient.ask
method accepts various parameters to customize your request. Hereβs an example with settings:
from grok3api.client import GrokClient
client = GrokClient(history_msg_count=5, always_new_conversation=False) # to use conversation history from grok.com
client.history.set_main_system_prompt("Respond briefly and with emojis.")
# Send a request with settings
result = client.ask(
message="Draw a cat like in this picture",
modelName="grok-3", # Default is grok-3 anyway
images=["C:\\Users\\user\\Downloads\\photo1_to_grok.jpg",
"C:\\Users\\user\\Downloads\\photo2_to_grok.jpg"] # You can send multiple images to Grok!
)
print(f"Grok3 response: {result.modelResponse.message}")
# Save all images
for i, img in enumerate(result.modelResponse.generatedImages):
img.save_to(f"cat_{i}.jpg")
print(f"Saved: cat_{i}.jpg πΎ")
π The best part? It works with automatically retrieved cookies! No need to worry about access β the client sets everything up for you.
If cookies are missing or expired, Grok3API automatically:
- Uses the Chrome browser (ensure itβs installed).
- Visits
https://grok.com/
. - Bypasses Cloudflare protection.
- Continues operation.
You donβt need to do anything manually β just run the code, and it works!
One of the standout features of GrokClient is its super-convenient handling of generated images. Hereβs a complete example:
from grok3api.client import GrokClient
client = GrokClient()
result = client.ask("Draw a sunset over the sea")
for i, image in enumerate(result.modelResponse.generatedImages):
image.save_to(f"sunset_{i}.jpg")
print(f"Saved: sunset_{i}.jpg π
")
The ask
method returns a GrokResponse
object.
Fields of the GrokResponse
object:
modelResponse
: The main model response.message
(str): The text response.generatedImages
(List[GeneratedImage]): List of images.
isThinking
: Whether the model was thinking (bool).isSoftStop
: Soft stop (bool).responseId
: Response ID (str).newTitle
: New chat title, if available (Optional[str]).
If somethingβs unclear, feel free to raise an issue β weβll figure it out together! π
Grok3API has no affiliation with xAI or the Grok developers. It is an independent project created by a third party and is not supported, sponsored or endorsed by xAI. Any issues with Grok should be addressed directly to xAI. You are responsible for ensuring that your use of Grok3API complies with all applicable laws and regulations. The developer does not encourage illegal use.