The Branding Configuration API allows you to customize the visual appearance, logos, colors, and metadata of your Vedaya instance.
Quick Start
import requests
# No authentication needed for basic retrieval!
API_BASE_URL = "https://vedaya-kge.fly.dev"
# Get current branding
response = requests.get(f"{API_BASE_URL}/branding/config")
if response.status_code == 200:
config = response.json()
print(f"Brand name: {config.get('brand', {}).get('name', 'Vedaya')}")
Get Branding Configuration
Retrieve the current branding configuration.
curl https://vedaya-kge.fly.dev/branding/config
{
"brand": {
"name": "Vedaya",
"tagline": "AI-Powered Knowledge Management",
"description": "Enterprise knowledge platform"
},
"assets": {
"logo": {
"light": "https://example.com/logo-light.svg",
"dark": "https://example.com/logo-dark.svg",
"favicon": "https://example.com/favicon.ico"
},
"colors": {
"primary": "#007BFF",
"secondary": "#6C757D",
"accent": "#28A745"
}
},
"links": {
"documentation": "https://docs.vedaya.ai",
"support": "https://support.vedaya.ai"
},
"metadata": {
"title": "Vedaya Knowledge Base",
"description": "Enterprise knowledge management powered by AI",
"keywords": ["knowledge", "AI", "enterprise"]
},
"version": "1.0.0",
"updated_at": "2024-01-01T00:00:00Z"
}
Update Branding Configuration
Update the branding configuration for your instance.
Brand informationCompany/instance name (1-50 characters)
Short tagline (max 100 characters)
Longer description (max 500 characters)
Visual assets configurationHex color codes for branding
SEO metadataPage title (1-100 characters)
SEO description (1-500 characters)
{
"brand": {
"name": "My Company",
"tagline": "Your AI Knowledge Platform",
"description": "Powered by Vedaya"
},
"assets": {
"logo": {
"light": "https://example.com/logo-light.svg",
"dark": "https://example.com/logo-dark.svg",
"favicon": "https://example.com/favicon.ico"
},
"colors": {
"primary": "#007BFF",
"secondary": "#6C757D",
"accent": "#28A745"
}
},
"links": {
"documentation": "https://docs.mycompany.com",
"support": "https://support.mycompany.com"
},
"metadata": {
"title": "My Company Knowledge Base",
"description": "Enterprise knowledge management powered by AI",
"keywords": ["knowledge", "AI", "enterprise"]
}
}
{
"brand": {
"name": "My Company",
"tagline": "Your AI Platform",
"description": "Powered by Vedaya"
},
"assets": {
"logo": {
"light": "https://example.com/logo.svg"
},
"colors": {
"primary": "#007BFF",
"secondary": "#6C757D",
"accent": "#28A745"
}
},
"metadata": {
"title": "My Knowledge Base",
"description": "AI-powered knowledge management"
},
"version": "1.0.0",
"updated_at": "2024-01-01T00:00:00Z"
}
Validate Configuration
Validate a branding configuration without saving it.
Request body is the same as the update configuration endpoint.
{
"valid": true,
"message": "Configuration is valid"
}
Upload Asset
Upload a branding asset (logo, favicon, etc.).
Type of asset (logo_light, logo_dark, favicon)
The file to upload (SVG, PNG, JPG, ICO)
curl -X POST "https://vedaya-kge.fly.dev/branding/assets?asset_type=logo_light" \
-F "file=@logo.svg"
{
"id": "asset_123",
"type": "logo_light",
"url": "https://vedaya-kge.fly.dev/assets/logo_123.svg",
"mime_type": "image/svg+xml",
"size": 4096,
"uploaded_at": "2024-01-01T00:00:00Z"
}
Get Asset
Retrieve a specific branding asset by ID.
Unique identifier of the asset
{
"id": "asset_123",
"type": "logo_light",
"url": "https://vedaya-kge.fly.dev/assets/logo_123.svg",
"mime_type": "image/svg+xml",
"size": 4096,
"uploaded_at": "2024-01-01T00:00:00Z"
}
Delete Asset
Remove a branding asset.
DELETE /branding/assets/{asset_id}
Path Parameters
Parameter | Type | Description |
---|
asset_id | string | Unique identifier of the asset |
Response
Returns confirmation of deletion.
All colors must be specified as 6-character hex codes (e.g., #007BFF
). The system validates:
- Primary color: Main brand color
- Secondary color: Supporting color
- Accent color: Highlight/action color
Logo Requirements
Logos can be provided as:
- URLs: Direct links to hosted images
- Base64: Embedded image data
- Uploaded files: Via the asset upload endpoint
Supported formats: SVG (recommended), PNG, JPG, ICO (for favicon)
Working Example: Complete Branding Workflow
Here’s a practical example of customizing your Vedaya instance:
import requests
import json
# API Configuration
API_BASE_URL = "https://vedaya-kge.fly.dev"
API_KEY = "sk-your-api-key" # Optional
headers = {"Content-Type": "application/json"}
if API_KEY and API_KEY != "sk-mock-dummy-key":
headers["Authorization"] = f"Bearer {API_KEY}"
# 1. Get current branding configuration
response = requests.get(f"{API_BASE_URL}/branding/config")
if response.status_code == 200:
current_config = response.json()
print(f"Current brand: {current_config.get('brand', {}).get('name', 'Vedaya')}")
# 2. Update branding configuration
new_config = {
"brand": {
"name": "Acme Corp",
"tagline": "Intelligence at Scale",
"description": "Acme Corp's enterprise knowledge management platform"
},
"assets": {
"logo": {
"light": "https://cdn.acme.com/logo-light.svg",
"dark": "https://cdn.acme.com/logo-dark.svg",
"favicon": "https://cdn.acme.com/favicon.ico"
},
"colors": {
"primary": "#1E40AF",
"secondary": "#64748B",
"accent": "#10B981"
}
},
"links": {
"documentation": "https://docs.acme.com",
"support": "https://support.acme.com"
},
"metadata": {
"title": "Acme Knowledge Base",
"description": "Enterprise AI-powered knowledge management and retrieval",
"keywords": ["knowledge", "AI", "enterprise", "acme"]
}
}
# 3. Validate configuration first (optional)
validate_response = requests.post(
f"{API_BASE_URL}/branding/validate",
headers=headers,
json=new_config
)
if validate_response.status_code == 200:
print("✅ Configuration is valid")
# 4. Apply the configuration
update_response = requests.post(
f"{API_BASE_URL}/branding/config",
headers=headers,
json=new_config
)
if update_response.status_code == 200:
print("✅ Branding updated successfully")
updated = update_response.json()
print(f"New brand name: {updated.get('brand', {}).get('name')}")
# 5. Upload a custom logo (if needed)
# with open('logo.svg', 'rb') as f:
# upload_response = requests.post(
# f"{API_BASE_URL}/branding/assets",
# headers={"Authorization": f"Bearer {API_KEY}"} if API_KEY else {},
# params={'asset_type': 'logo_light'},
# files={'file': f}
# )
# if upload_response.status_code == 200:
# asset_url = upload_response.json().get('url')
# print(f"Logo uploaded: {asset_url}")
This workflow will:
- Retrieve current branding
- Validate your new configuration
- Update the branding (auth may be required)
- Display “Acme Corp” as the brand name
- Use custom logos for light/dark themes
- Apply a blue/gray/green color scheme
- Set appropriate SEO metadata
- Link to company resources