Files
anthropics_skills/skills/claude-api/ruby/claude-api.md
T
Eric Harmeling 7029232b92 Add claude-api skill (#515)
Documentation skill for building applications with the Claude API
and Agent SDK. Covers Python, TypeScript, Java, Go, Ruby, C#, PHP,
and cURL with language-specific guides for:

- Messages API basics, streaming, and error handling
- Tool use (tool runner and manual agentic loop)
- Structured outputs and adaptive thinking
- Batches and Files APIs
- Agent SDK patterns (Python/TypeScript)
- Model catalog and selection guidance
2026-03-04 15:05:44 -05:00

88 lines
1.8 KiB
Markdown

# Claude API — Ruby
> **Note:** The Ruby SDK supports the Claude API. A tool runner is available in beta via `client.beta.messages.tool_runner()`. Agent SDK is not yet available for Ruby.
## Installation
```bash
gem install anthropic
```
## Client Initialization
```ruby
require "anthropic"
# Default (uses ANTHROPIC_API_KEY env var)
client = Anthropic::Client.new
# Explicit API key
client = Anthropic::Client.new(api_key: "your-api-key")
```
---
## Basic Message Request
```ruby
message = client.messages.create(
model: :"claude-opus-4-6",
max_tokens: 1024,
messages: [
{ role: "user", content: "What is the capital of France?" }
]
)
puts message.content.first.text
```
---
## Streaming
```ruby
stream = client.messages.stream(
model: :"claude-opus-4-6",
max_tokens: 1024,
messages: [{ role: "user", content: "Write a haiku" }]
)
stream.text.each { |text| print(text) }
```
---
## Tool Use
The Ruby SDK supports tool use via raw JSON schema definitions and also provides a beta tool runner for automatic tool execution.
### Tool Runner (Beta)
```ruby
class GetWeatherInput < Anthropic::BaseModel
required :location, String, doc: "City and state, e.g. San Francisco, CA"
end
class GetWeather < Anthropic::BaseTool
doc "Get the current weather for a location"
input_schema GetWeatherInput
def call(input)
"The weather in #{input.location} is sunny and 72°F."
end
end
client.beta.messages.tool_runner(
model: :"claude-opus-4-6",
max_tokens: 1024,
tools: [GetWeather.new],
messages: [{ role: "user", content: "What's the weather in San Francisco?" }]
).each_message do |message|
puts message.content
end
```
### Manual Loop
See the [shared tool use concepts](../shared/tool-use-concepts.md) for the tool definition format and agentic loop pattern.