Cohere API API in Ruby
Cohere API API in Ruby
This guide shows you how to integrate the Cohere API into your Ruby application. NLP platform for text generation, classification, embedding, and reranking with Command R models.
Prerequisites
- Ruby installed on your system
- An Cohere API API key (sign up at https://cohere.ai)
- Basic familiarity with HTTP APIs
Installation
gem install httparty
Basic Usage
require 'net/http'
require 'json'
require 'uri'
api_key = ENV['API_KEY'] || 'YOUR_API_KEY'
base_url = 'https://api.cohere.ai'
uri = URI("#{base_url}/v1/resources")
request = Net::HTTP::Get.new(uri)
request['Authorization'] = "Bearer #{api_key}"
request['Content-Type'] = 'application/json'
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(request)
end
puts "Status: #{response.code}"
puts response.body
Error Handling
require 'net/http'
require 'json'
require 'uri'
def call_api_with_retry(url, headers, max_retries = 3)
uri = URI(url)
max_retries.times do |attempt|
request = Net::HTTP::Get.new(uri)
headers.each { |k, v| request[k] = v }
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(request)
end
if response.code == '429'
sleep(60)
next
end
return response unless response.code.to_i >= 500
sleep(2 ** attempt)
end
raise "Max retries exceeded"
end
url = 'https://api.cohere.ai/v1/resources'
headers = { 'Authorization' => "Bearer #{ENV['API_KEY']}", 'Content-Type' => 'application/json' }
response = call_api_with_retry(url, headers)
puts response.body
Advanced Usage
require 'net/http'
require 'json'
require 'uri'
class CohereClient
def initialize(api_key, base_url = 'https://api.cohere.ai')
@api_key = api_key
@base_url = base_url.chomp('/')
end
def request(method, path, body = nil)
uri = URI("#{@base_url}/v1#{path}")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request_class = Net::HTTP.const_get(method.capitalize)
request = request_class.new(uri)
request['Authorization'] = "Bearer #{@api_key}"
request['Content-Type'] = 'application/json'
request.body = body.to_json if body
response = http.request(request)
raise "API Error: #{response.code}" if response.code.to_i >= 400
JSON.parse(response.body)
end
def list_resources(params = {})
query = URI.encode_www_form(params)
path = "/resources#{query.empty? ? '' : '?' + query}"
request('get', path)
end
def create_resource(data)
request('post', '/resources', data)
end
end
client = CohereClient.new(ENV['API_KEY'] || 'YOUR_API_KEY')
resources = client.list_resources(limit: 50)
puts "Found #{resources['data']&.length || 0} resources"
Best Practices
- Store your API key in an environment variable, never in source code
- Implement retry logic with exponential backoff for 429 and 5xx errors
- Set reasonable timeouts (10-30 seconds) for all API calls
- Log request IDs from response headers for debugging
- Cache responses where appropriate to reduce API calls