use claude_agent_sdk::v2::{create_session, prompt, resume_session, SessionOptions};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
println!("=== V2 API Examples ===\n");
one_shot_prompt_example().await?;
session_example().await?;
session_options_example().await?;
Ok(())
}
async fn one_shot_prompt_example() -> anyhow::Result<()> {
println!("=== One-Shot Prompt Example ===\n");
let result = prompt("What is 2 + 2? Answer briefly.", Default::default()).await?;
println!("Question: What is 2 + 2?");
println!("Answer: {}", result.content);
println!(
"Tokens used: {} input + {} output = {} total",
result.input_tokens,
result.output_tokens,
result.total_tokens()
);
if let Some(model) = &result.model {
println!("Model: {}", model);
}
println!();
Ok(())
}
async fn session_example() -> anyhow::Result<()> {
println!("=== Session Example ===\n");
let mut session = create_session(Default::default()).await?;
println!("Created session: {}", session.id);
session.send("My favorite color is blue. Remember this.").await?;
let messages = session.receive().await?;
for msg in messages {
if let Some(text) = msg.as_text() {
println!("Claude: {}", text);
}
}
session.send("What is my favorite color?").await?;
let messages = session.receive().await?;
for msg in messages {
if let Some(text) = msg.as_text() {
println!("Claude: {}", text);
}
}
session.close().await?;
println!("Session closed.\n");
Ok(())
}
async fn session_options_example() -> anyhow::Result<()> {
println!("=== Session Options Example ===\n");
let options = SessionOptions::builder()
.max_turns(3)
.permission_mode(claude_agent_sdk::v2::PermissionMode::BypassPermissions)
.build();
let mut session = create_session(options).await?;
println!("Created session with custom options: {}", session.id);
session.send("Tell me a very short joke in one sentence.").await?;
let messages = session.receive().await?;
for msg in messages {
if let Some(text) = msg.as_text() {
println!("Claude: {}", text);
}
}
session.close().await?;
println!("\n--- Session Resumption ---");
let session_id = "custom-session-123";
let resumed_session = resume_session(session_id, Default::default()).await?;
println!("Resumed session with ID: {}", resumed_session.id);
resumed_session.close().await?;
println!();
Ok(())
}