API Reference
BlockForge API documentation for developers.
Overview
BlockForge uses Supabase as its backend, providing:
- REST API - Standard REST endpoints
- Realtime Subscriptions - Real-time updates
- Storage API - File upload and management
- Edge Functions - Custom serverless functions
Authentication
BlockForge uses Supabase Auth for authentication.
Getting Started
javascript
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
process.env.VITE_SUPABASE_URL,
process.env.VITE_SUPABASE_ANON_KEY
)Sign Up
javascript
const { data, error } = await supabase.auth.signUp({
email: 'user@example.com',
password: 'password123'
})Sign In
javascript
const { data, error } = await supabase.auth.signInWithPassword({
email: 'user@example.com',
password: 'password123'
})Sign Out
javascript
const { error } = await supabase.auth.signOut()Pages API
List Pages
javascript
const { data, error } = await supabase
.from('pages')
.select('*')
.eq('workspace_id', workspaceId)Get Page
javascript
const { data, error } = await supabase
.from('pages')
.select('*')
.eq('id', pageId)
.single()Create Page
javascript
const { data, error } = await supabase
.from('pages')
.insert([
{
title: 'New Page',
workspace_id: workspaceId,
content: { type: 'doc', content: [] }
}
])Update Page
javascript
const { data, error } = await supabase
.from('pages')
.update({ title: 'Updated Title' })
.eq('id', pageId)Delete Page
javascript
const { error } = await supabase
.from('pages')
.delete()
.eq('id', pageId)Tasks API
List Tasks
javascript
const { data, error } = await supabase
.from('tasks')
.select('*')
.eq('workspace_id', workspaceId)Create Task
javascript
const { data, error } = await supabase
.from('tasks')
.insert([
{
title: 'New Task',
workspace_id: workspaceId,
due_date: '2024-12-31'
}
])Update Task
javascript
const { data, error } = await supabase
.from('tasks')
.update({ completed: true })
.eq('id', taskId)Storage API
Upload File
javascript
const { data, error } = await supabase.storage
.from('public-uploads')
.upload('path/to/file.jpg', file)Get Public URL
javascript
const { data } = supabase.storage
.from('public-uploads')
.getPublicUrl('path/to/file.jpg')Delete File
javascript
const { error } = await supabase.storage
.from('public-uploads')
.remove(['path/to/file.jpg'])Realtime Subscriptions
Subscribe to Changes
javascript
const subscription = supabase
.channel('pages')
.on('postgres_changes',
{ event: '*', schema: 'public', table: 'pages' },
(payload) => {
console.log('Change received!', payload)
}
)
.subscribe()Unsubscribe
javascript
subscription.unsubscribe()Edge Functions
BlockForge includes Edge Functions for:
- AI API proxy
- GitHub integration
- Custom business logic
Calling Edge Functions
javascript
const { data, error } = await supabase.functions.invoke('function-name', {
body: { key: 'value' }
})Error Handling
All API calls return errors in this format:
javascript
{
error: {
message: 'Error message',
status: 400
}
}Always check for errors:
javascript
const { data, error } = await supabase.from('pages').select('*')
if (error) {
console.error('Error:', error.message)
return
}
// Use data
console.log(data)Rate Limits
- Anonymous requests: Limited by Supabase plan
- Authenticated requests: Higher limits
- Edge Functions: Subject to function limits