Authentication
Environment Setup
Configure your development environment for BrainUs API
Set up your development environment to work securely with the BrainUs API across different platforms and frameworks.
Quick Setup
# Install SDK
npm install @brainus/ai
# Install dotenv for environment variables
npm install dotenv
# Create .env file
echo "BRAINUS_API_KEY=sk_test_your_key_here" > .env
echo ".env" >> .gitignore// index.js
require("dotenv").config();
const { BrainusAI } = require("@brainus/ai");
const client = new BrainusAI({
apiKey: process.env.BRAINUS_API_KEY,
});
async function main() {
const result = await client.query({
query: "What is photosynthesis?",
storeId: "default",
});
console.log(result.answer);
}
main();# Install SDK
pip install brainus-ai
# Install python-dotenv
pip install python-dotenv
# Create .env file
echo "BRAINUS_API_KEY=sk_test_your_key_here" > .env
echo ".env" >> .gitignore# main.py
from dotenv import load_dotenv
import os
import asyncio
from brainus_ai import BrainusAI
load_dotenv()
async def main():
async with BrainusAI(api_key=os.getenv("BRAINUS_API_KEY")) as client:
result = await client.query(
query="What is photosynthesis?",
store_id="default"
)
print(result.answer)
if __name__ == "__main__":
asyncio.run(main())# Install SDK
go get github.com/brainus-ai/brainus-go
# Install godotenv
go get github.com/joho/godotenv
# Create .env file
echo "BRAINUS_API_KEY=sk_test_your_key_here" > .env
echo ".env" >> .gitignore// main.go
package main
import (
"fmt"
"log"
"os"
"github.com/brainus-ai/brainus-go"
"github.com/joho/godotenv"
)
func main() {
godotenv.Load()
client := brainus.NewClient(os.Getenv("BRAINUS_API_KEY"))
result, err := client.Query(brainus.QueryRequest{
Query: "What is photosynthesis?",
StoreID: "default",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(result.Answer)
}Framework-Specific Setup
Next.js
# Install dependencies
npm install @brainus/ai
# Create .env.local (automatically ignored by Next.js)
echo "BRAINUS_API_KEY=brainus_your_key_here" > .env.local// app/api/query/route.ts
import { BrainusAI } from "@brainus/ai";
import { NextRequest, NextResponse } from "next/server";
const client = new BrainusAI({
apiKey: process.env.BRAINUS_API_KEY!,
});
export async function POST(request: NextRequest) {
const { query } = await request.json();
const result = await client.query({
query,
storeId: "default",
});
return NextResponse.json(result);
}Django
# Install dependencies
pip install brainus-ai python-decouple
# Create .env file
echo "BRAINUS_API_KEY=brainus_your_key_here" > .env# settings.py
from decouple import config
BRAINUS_API_KEY = config('BRAINUS_API_KEY')# views.py
from django.http import JsonResponse
from brainus_ai import BrainusAI
from django.conf import settings
from asgiref.sync import async_to_sync
# Note: Ideally use async views. For sync views, wrap the call.
def query_view(request):
async def get_result():
async with BrainusAI(api_key=settings.BRAINUS_API_KEY) as client:
return await client.query(query=request.POST.get('query'), store_id='default')
result = async_to_sync(get_result)()
return JsonResponse({'answer': result.answer})Flask
# Install dependencies
pip install brainus-ai python-dotenv flask
# Create .env file
echo "BRAINUS_API_KEY=brainus_your_key_here" > .env# app.py
from flask import Flask, request, jsonify
from brainus_ai import BrainusAI
from dotenv import load_dotenv
import os
import asyncio
load_dotenv()
app = Flask(__name__)
@app.route('/query', methods=['POST'])
async def query():
data = request.json
async with BrainusAI(api_key=os.getenv("BRAINUS_API_KEY")) as client:
result = await client.query(query=data['query'], store_id='default')
return jsonify({'answer': result.answer})
if __name__ == '__main__':
app.run()Express.js
# Install dependencies
npm install @brainus/ai dotenv express
# Create .env file
echo "BRAINUS_API_KEY=brainus_your_key_here" > .env// server.js
require("dotenv").config();
const express = require("express");
const { BrainusAI } = require("@brainus/ai");
const app = express();
app.use(express.json());
const client = new BrainusAI({
apiKey: process.env.BRAINUS_API_KEY,
});
app.post("/query", async (req, res) => {
const { query } = req.body;
const result = await client.query({
query,
storeId: "default",
});
res.json({ answer: result.answer });
});
app.listen(3000, () => console.log("Server running on port 3000"));Environment Variables
Recommended Variables
# Required
BRAINUS_API_KEY=brainus_your_key_here
# Optional
BRAINUS_API_URL=https://api.brainus.lk # Default
BRAINUS_TIMEOUT=30000 # Request timeout (ms)
BRAINUS_MAX_RETRIES=3 # Auto-retry on failureMultiple Environments
# .env.development
BRAINUS_API_KEY=sk_test_dev_key
# .env.staging
BRAINUS_API_KEY=sk_test_staging_key
# .env.production
BRAINUS_API_KEY=brainus_production_keyDocker Setup
# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
CMD ["node", "index.js"]# docker-compose.yml
version: "3.8"
services:
app:
build: .
environment:
- BRAINUS_API_KEY=${BRAINUS_API_KEY}
ports:
- "3000:3000"# Run with environment variable
docker-compose upCI/CD Integration
GitHub Actions
# .github/workflows/test.yml
name: Test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm ci
- run: npm test
env:
BRAINUS_API_KEY: ${{ secrets.BRAINUS_API_KEY }}GitLab CI
# .gitlab-ci.yml
test:
script:
- npm ci
- npm test
variables:
BRAINUS_API_KEY: $BRAINUS_API_KEYStore API keys as secrets in your CI/CD platform, never in the config files!
Verification
Test your setup:
# Node.js
node -e "console.log(process.env.BRAINUS_API_KEY)"
# Python
python -c "import os; print(os.getenv('BRAINUS_API_KEY'))"
# Verify API connection
curl -X POST "https://api.brainus.lk/api/v1/query" \
-H "X-API-Key: $BRAINUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "test", "store_id": "default"}'Troubleshooting
"API key not found"
# Check if variable is loaded
echo $BRAINUS_API_KEY
# Make sure .env is in the right location
ls -la .env
# Verify .env is not in the .gitignore for local dev
# (it should be in .gitignore for version control!)"Permission denied"
# Check file permissions
chmod 600 .envNext Steps
- Managing API Keys - Create and manage keys
- Security Best Practices - Keep your keys safe
- Quick Start Guide - Make your first API call