Skip to content

Unofficial Grok 3 API Python library that works without entering credentials

License

Notifications You must be signed in to change notification settings

boykopovar/Grok3API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ 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: Client for Working with Grok


πŸ†• v0.0.1b11

✨ New:

  • πŸ–ΌοΈ Support for sending images to Grok
    Sending images to the Grok server is now much easier! A detailed description of the method is available here.

  • πŸ€– Ongoing work on OpenAI compatibility

    • βœ… Now supports any api_key for server interaction.
    • βš™οΈ Added server configuration options (via command-line arguments and environment variables). Detailed instructions are available in 🌐 Running an OpenAI-Compatible Server.

⚠️ The server is still in early development, and some features may be unstable.


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.


🌟 Features

  • πŸš€ 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), capable of generating text responses and images.

πŸ“¦ Installation

To start using GrokClient, install the required dependencies. It’s simple:

pip install grok3api

⚠️ Important: Ensure Google Chrome is installed, as undetected_chromedriver relies on it.

After installation, you’re ready to go! πŸŽ‰


πŸš€ Usage

Quick Start

Here’s a complete example of sending a request and saving a generated image:

from grok3api.client import GrokClient


def main():
    # 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:\\Users\\user\\Downloads\\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! πŸš€")


if __name__ == '__main__':
    main()

This code:

  1. Creates a client β€” automatically retrieves cookies if none are provided.
  2. Sends a request to generate an image.
  3. 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:

Ship example

🐹 Or, for instance, if you request "A gopher on Elbrus":

Gopher on Elbrus

πŸ’‘ Cool feature: You don’t need to manually fetch cookies β€” the client handles it for you!


πŸ”§ Request Parameters

The GrokClient.ask method accepts various parameters to customize your request. Here’s an example with settings:

from grok3api.client import GrokClient


def main():
    
    # Create a client (cookies are automatically retrieved if not provided)
    client = GrokClient(history_msg_count=5)
    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 🐾")


if __name__ == '__main__':
    main()

🌟 The best part? It works with automatically retrieved cookies! No need to worry about access β€” the client sets everything up for you.


πŸ”„ Automatic Cookie Retrieval

If cookies are missing or expired, Grok3API automatically:

  1. Uses the Chrome browser (ensure it’s installed).
  2. Visits https://grok.com/.
  3. Bypasses Cloudflare protection.
  4. Continues operation.

You don’t need to do anything manually β€” just run the code, and it works!


πŸ–ΌοΈ Convenient Image Retrieval

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


def main():
    # Create a client (cookies are automatically retrieved if not provided)
    client = GrokClient()

    # Send a request
    result = client.ask("Draw a sunset over the sea")

    # Save all images
    for i, image in enumerate(result.modelResponse.generatedImages):
        image.save_to(f"sunset_{i}.jpg")
        print(f"Saved: sunset_{i}.jpg πŸŒ…")


if __name__ == '__main__':
    main()

πŸ“‹ Response Handling

The ask method returns a GrokResponse object. Here’s an example of working with it:

from grok3api.client import GrokClient


def main():
    cookies = "YOUR_COOKIES_FROM_BROWSER"
    
    # Create a client
    client = GrokClient(cookies=cookies)

    # Send a request
    result = client.ask("Describe and draw a forest")

    # Process the response
    print(f"Text: {result.modelResponse.message}")
    result.modelResponse.generatedImages[0].save_to("forest.jpg")


if __name__ == '__main__':
    main()

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! 🌟

Disclaimer

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.

About

Unofficial Grok 3 API Python library that works without entering credentials

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages