> ## Documentation Index
> Fetch the complete documentation index at: https://docs.legnext.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Authentication

> Set up API authentication for Ruby SDK

## Getting Your API Key

1. Visit [Legnext.ai Dashboard](https://legnext.ai/dashboard)
2. Navigate to API Keys section
3. Generate a new API key
4. Copy and store securely

## Authentication Methods

### Method 1: Environment Variables (Recommended)

Set your API key as an environment variable:

```bash theme={null}
export LEGNEXT_API_KEY="your-api-key-here"
```

Then use it in your Ruby code:

```ruby theme={null}
require 'openapi_client'

# Configure API client
OpenapiClient.configure do |config|
  config.api_key['x-api-key'] = ENV['LEGNEXT_API_KEY']
  config.host = 'api.legnext.ai'
  config.base_path = ''
end

# Create API instance
api = OpenapiClient::ImageApi.new

# Now you can use the API
# ...
```

### Method 2: Direct Initialization

Hardcode the API key directly (not recommended for production):

```ruby theme={null}
require 'openapi_client'

OpenapiClient.configure do |config|
  config.api_key['x-api-key'] = 'your-api-key-here'
  config.host = 'api.legnext.ai'
  config.base_path = ''
end

api = OpenapiClient::ImageApi.new
```

### Method 3: Using dotenv Gem

Use the `dotenv` gem to load from `.env` files:

```bash theme={null}
gem install dotenv
```

```ruby theme={null}
require 'dotenv/load'
require 'openapi_client'

# .env file is automatically loaded
OpenapiClient.configure do |config|
  config.api_key['x-api-key'] = ENV['LEGNEXT_API_KEY']
  config.host = 'api.legnext.ai'
  config.base_path = ''
end

api = OpenapiClient::ImageApi.new
```

**.env file:**

```
LEGNEXT_API_KEY=your-api-key-here
```

### Method 4: YAML Configuration File

Load API key from a YAML configuration file:

```ruby theme={null}
require 'yaml'
require 'openapi_client'

# Load configuration
config_file = YAML.load_file('config.yml')

OpenapiClient.configure do |config|
  config.api_key['x-api-key'] = config_file['api_key']
  config.host = 'api.legnext.ai'
  config.base_path = ''
end

api = OpenapiClient::ImageApi.new
```

**config.yml:**

```yaml theme={null}
api_key: your-api-key-here
environment: development
```

### Method 5: Rails Credentials (for Rails Applications)

For Rails 5.2+, use encrypted credentials:

```bash theme={null}
rails credentials:edit
```

Add to credentials:

```yaml theme={null}
legnext:
  api_key: your-api-key-here
```

In your Rails app:

```ruby theme={null}
require 'openapi_client'

OpenapiClient.configure do |config|
  config.api_key['x-api-key'] = Rails.application.credentials.legnext[:api_key]
  config.host = 'api.legnext.ai'
  config.base_path = ''
end

api = OpenapiClient::ImageApi.new
```

***

## Complete Configuration Example

```ruby theme={null}
require 'openapi_client'

OpenapiClient.configure do |config|
  # Required: API Key
  config.api_key['x-api-key'] = ENV['LEGNEXT_API_KEY']

  # Required: API Host
  config.host = 'api.legnext.ai'
  config.base_path = ''

  # Optional: Set debugging mode
  config.debugging = ENV['LEGNEXT_DEBUG'] == 'true'

  # Optional: Set timeout (in seconds)
  config.timeout = 120

  # Optional: Set custom user agent
  config.user_agent = 'MyApp/1.0'

  # Optional: SSL verification (recommended: true)
  config.verify_ssl = true
  config.verify_ssl_host = true
end
```

***

## Security Best Practices

1. **Never commit API keys to version control**
   ```ruby theme={null}
   # .gitignore
   .env
   config.yml
   config/credentials/*.yml.enc
   ```

2. **Use environment variables in production**
   ```bash theme={null}
   # Set in your deployment environment
   export LEGNEXT_API_KEY="your-production-key"
   ```

3. **Rotate keys regularly**
   * Generate new keys periodically
   * Revoke old keys after rotation

4. **Use different keys for development and production**
   ```ruby theme={null}
   OpenapiClient.configure do |config|
     api_key = if ENV['RAILS_ENV'] == 'production'
                 ENV['LEGNEXT_PROD_API_KEY']
               else
                 ENV['LEGNEXT_DEV_API_KEY']
               end
     config.api_key['x-api-key'] = api_key
     config.host = 'api.legnext.ai'
     config.base_path = ''
   end
   ```

5. **Restrict API key permissions**
   * Use the minimum required permissions
   * Monitor usage through the dashboard

6. **Enable SSL verification**
   ```ruby theme={null}
   OpenapiClient.configure do |config|
     config.verify_ssl = true
     config.verify_ssl_host = true
   end
   ```

***

## Testing Authentication

Verify your API key is working:

```ruby theme={null}
require 'openapi_client'

OpenapiClient.configure do |config|
  config.api_key['x-api-key'] = ENV['LEGNEXT_API_KEY']
  config.host = 'api.legnext.ai'
  config.base_path = ''
end

api_key = ENV['LEGNEXT_API_KEY']
account_api = OpenapiClient::AccountManagementApi.new

begin
  # Test with account balance endpoint
  response = account_api.api_account_balance_get({x_api_key: api_key})

  puts "✅ Authentication successful!"
  if response.data
    puts "Balance: $#{response.data.balance_usd}"
  end

rescue OpenapiClient::ApiError => e
  if e.code == 401
    puts "❌ Authentication failed: Invalid API key"
  else
    puts "❌ Error: #{e.message}"
  end
end
```

***

## Debugging

Enable debugging to see HTTP requests and responses:

```ruby theme={null}
OpenapiClient.configure do |config|
  config.api_key['x-api-key'] = ENV['LEGNEXT_API_KEY']
  config.host = 'api.legnext.ai'
  config.base_path = ''
  config.debugging = true  # Enable debug output
  config.logger = Logger.new(STDOUT)  # Custom logger
  config.logger.level = Logger::DEBUG
end
```

***

## Next Steps

* [Image Generation](/sdk/ruby/image-generation)
* [Video Generation](/sdk/ruby/video-generation)
* [Task Management](/sdk/ruby/task-management)
* [Quick Start](/sdk/ruby/quickstart)
