Skip to main content

Crate gemini_chat_api

Crate gemini_chat_api 

Source
Expand description

Async Rust client for the Gemini web chat endpoints.

This crate talks to the same web endpoints used by Gemini’s browser UI and authenticates with browser cookies. It does not use API keys.

Key points

  • Async-first (reqwest + tokio).
  • Requires __Secure-1PSID; __Secure-1PSIDTS is expected but may be rotated if missing.
  • Stateful: the client keeps conversation IDs between calls.

§Quick start

use gemini_chat_api::{AsyncChatbot, Model, Result, load_cookies};

#[tokio::main]
async fn main() -> Result<()> {
    let (psid, psidts) = load_cookies("cookies.json")?;
    let mut chatbot = AsyncChatbot::new(&psid, &psidts, Model::default(), None, 30).await?;

    let response = chatbot.ask("Hello! Tell me a joke.", None).await?;
    println!("{}", response.content);
    Ok(())
}

§Image input

use gemini_chat_api::{AsyncChatbot, Model, Result, load_cookies};

#[tokio::main]
async fn main() -> Result<()> {
    let (psid, psidts) = load_cookies("cookies.json")?;
    let mut chatbot = AsyncChatbot::new(&psid, &psidts, Model::default(), None, 30).await?;

    let image = std::fs::read("image.png")?;
    let response = chatbot.ask("Describe this image.", Some(&image)).await?;
    println!("{}", response.content);
    Ok(())
}

Re-exports§

pub use client::AsyncChatbot;
pub use client::ChatResponse;
pub use client::Choice;
pub use client::SavedConversation;
pub use enums::Endpoint;
pub use enums::Model;
pub use error::Error;
pub use error::Result;
pub use utils::load_cookies;

Modules§

client
Async client for Gemini web chat endpoints.
enums
Enums and constants for Gemini endpoints, headers, and models.
error
Error types for this crate.
utils
Utility functions for cookie loading and file upload.