Project

fluxtokens

0.0
The project is in a healthy, maintained state
Access GPT-4.1, Gemini 2.5 and more at 30% lower cost than competitors
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 13.0
~> 3.0
~> 1.0
~> 3.0

Runtime

 Project Readme

FluxTokens Ruby SDK

Gem Version License: MIT

Official Ruby SDK for the FluxTokens API

Access GPT-4.1, Gemini 2.5 Flash and more at 30% lower cost than competitors.

Website · Documentation · Dashboard


Installation

Add to your Gemfile:

gem 'fluxtokens'

Or install directly:

gem install fluxtokens

Quick Start

require 'fluxtokens'

client = FluxTokens::Client.new(api_key: 'sk-flux-your-api-key')

response = client.chat.completions.create(
  model: 'gpt-4.1-mini',
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'Hello!' }
  ]
)

puts response.choices[0].message.content

Available Models

Model Provider Input Price Output Price Max Tokens Vision Audio Video
gpt-4.1-mini OpenAI $0.28/1M $1.12/1M 16,384
gpt-4.1-nano OpenAI $0.07/1M $0.28/1M 16,384
gemini-2.5-flash Google $0.21/1M $1.75/1M 65,536

Usage Examples

Basic Chat Completion

response = client.chat.completions.create(
  model: 'gpt-4.1-mini',
  messages: [{ role: 'user', content: 'What is the capital of France?' }],
  temperature: 0.7,
  max_tokens: 256
)

puts response.choices[0].message.content
# Output: "The capital of France is Paris."

Streaming Responses

stream = client.chat.completions.create(
  model: 'gemini-2.5-flash',
  messages: [{ role: 'user', content: 'Write a haiku about programming.' }],
  stream: true
)

stream.each do |chunk|
  content = chunk.choices[0].delta.content
  print content if content
end

Vision (Image Analysis)

response = client.chat.completions.create(
  model: 'gpt-4.1-mini',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'What is in this image?' },
        {
          type: 'image_url',
          image_url: {
            url: 'https://example.com/image.jpg',
            detail: 'high'
          }
        }
      ]
    }
  ],
  max_tokens: 500
)

Audio Input (Gemini only)

require 'base64'

audio_data = Base64.strict_encode64(File.read('audio.mp3'))

response = client.chat.completions.create(
  model: 'gemini-2.5-flash',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'Transcribe this audio:' },
        {
          type: 'input_audio',
          input_audio: {
            data: audio_data,
            format: 'mp3'
          }
        }
      ]
    }
  ]
)

System Messages

response = client.chat.completions.create(
  model: 'gpt-4.1-mini',
  messages: [
    { role: 'system', content: 'You are a pirate. Always respond in pirate speak.' },
    { role: 'user', content: 'How are you today?' }
  ]
)
# Output: "Ahoy, matey! I be doin' just fine, thank ye fer askin'!"

List Available Models

client.models.list.each do |model|
  puts "#{model.name} (#{model.provider})"
  puts "  Input: $#{model.input_price}/1M tokens"
  puts "  Output: $#{model.output_price}/1M tokens"
  puts "  Vision: #{model.supports_vision ? '✅' : '❌'}"
end

Configuration Options

client = FluxTokens::Client.new(
  api_key: 'sk-flux-...',
  base_url: 'https://api.fluxtokens.io', # Custom base URL
  timeout: 60,                            # Request timeout in seconds
  max_retries: 3                          # Max retries on rate limit/server errors
)

Error Handling

begin
  response = client.chat.completions.create(
    model: 'gpt-4.1-mini',
    messages: [{ role: 'user', content: 'Hello' }]
  )
rescue FluxTokens::AuthenticationError
  puts "Invalid API key"
rescue FluxTokens::RateLimitError => e
  puts "Rate limit exceeded, retry after: #{e.retry_after}"
rescue FluxTokens::InsufficientBalanceError
  puts "Please add credits at https://fluxtokens.io/dashboard/billing"
rescue FluxTokens::BadRequestError => e
  puts "Invalid request: #{e.message}"
rescue FluxTokens::Error => e
  puts "Error: #{e.message}"
end

Requirements

  • Ruby 3.0+
  • Faraday 2.0+

Support

License

MIT © FluxTokens