Skip to main content

Getting Your API Key

1

Sign Up

Create an account at fibonacci.today
2

Navigate to API Keys

Go to your Dashboard → Settings → API Keys
3

Generate a Key

Click “Create New Key” and give it a descriptive name
4

Copy Your Key

Copy the key immediately - it won’t be shown again!
API keys start with fib_live_ (production) or fib_test_ (sandbox). Keep them secure and never share them publicly.

Authentication Methods

Fibonacci supports multiple ways to provide your API key, in order of security:
MethodSecurity LevelBest For
System Keychain🔐 HighestProduction environments
Environment Variable🔒 HighCI/CD, containers
.env File⚠️ MediumLocal development
Direct Parameter❌ LowTesting only

The most secure option. Your API key is encrypted by the operating system.

Save to Keychain

from fibonacci import save_api_key_secure

# Save once - it's stored encrypted
save_api_key_secure("fib_live_your_api_key_here")

Use in Your Code

from fibonacci import Workflow, get_config_secure

# Automatically loads from keychain
config = get_config_secure()

wf = Workflow(name="My Workflow", config=config)
wf.deploy()  # Uses keychain API key

Supported Platforms

PlatformBackend
macOSKeychain Services
WindowsCredential Manager
LinuxSecret Service (GNOME Keyring, KWallet)

Check Security Status

from fibonacci import check_security_status

status = check_security_status()
print(f"Security Level: {status['security_level']}")
print(f"API Key Location: {'Keychain' if status['api_key_in_keychain'] else 'Environment'}")

CLI: Manage Credentials

# Save API key interactively
fibonacci security save

# Check security status
fibonacci security status

# Migrate from .env to keychain
fibonacci security migrate

Method 2: Environment Variable

Good for CI/CD pipelines and containerized deployments.

Set the Variable

export FIBONACCI_API_KEY=fib_live_your_api_key_here

Use in Your Code

from fibonacci import Workflow
from fibonacci.config import Config

# Automatically loads from environment
config = Config.from_env()

wf = Workflow(name="My Workflow", config=config)

Method 3: .env File

Convenient for local development. Never commit to version control.

Create .env File

.env
FIBONACCI_API_KEY=fib_live_your_api_key_here
FIBONACCI_BASE_URL=https://api.fibonacci.ai
FIBONACCI_TIMEOUT=300
FIBONACCI_DEBUG=false

Add to .gitignore

.gitignore
# API Keys - Never commit!
.env
.env.local
.env.*.local

Use in Your Code

from dotenv import load_dotenv
from fibonacci import Workflow
from fibonacci.config import Config

load_dotenv()  # Load .env file

config = Config.from_env()
wf = Workflow(name="My Workflow", config=config)

Method 4: Direct Parameter

Only use for quick testing. Never use in production code.
# ⚠️ Warning: Only for testing!
wf.deploy(api_key="fib_live_your_api_key_here")

Configuration Options

All available configuration options:
VariableDefaultDescription
FIBONACCI_API_KEY-Your API key (required)
FIBONACCI_BASE_URLhttps://api.fibonacci.aiAPI endpoint
FIBONACCI_TIMEOUT300Request timeout in seconds
FIBONACCI_MAX_RETRIES3Max retry attempts
FIBONACCI_VERIFY_SSLtrueVerify SSL certificates
FIBONACCI_DEBUGfalseEnable debug logging
FIBONACCI_LOG_REQUESTSfalseLog API requests
FIBONACCI_LOG_RESPONSESfalseLog API responses

Programmatic Configuration

from fibonacci.config import Config

config = Config(
    api_key="fib_live_xxx",
    base_url="https://api.fibonacci.ai",
    timeout=300,
    max_retries=3,
    verify_ssl=True,
    debug=False
)

Migrating to Secure Storage

If you’re currently using a .env file, migrate to keychain storage:

Option 1: CLI

fibonacci security migrate

Option 2: Python

from fibonacci import migrate_to_keychain

if migrate_to_keychain():
    print("✅ Migrated! You can now delete FIBONACCI_API_KEY from .env")
else:
    print("❌ Migration failed")

Verifying Authentication

Test that your API key works:
from fibonacci import FibonacciClient
from fibonacci.config import Config

config = Config.from_env()

async def test_auth():
    async with FibonacciClient(config) as client:
        workflows = await client.list_workflows()
        print(f"✅ Authenticated! Found {len(workflows)} workflows")

import asyncio
asyncio.run(test_auth())
Or use the CLI:
fibonacci list
If you see your workflows listed, authentication is working correctly!

Next Steps