SDK Libraries
Alpha Release
The Python, Node.js, and Go SDKs are currently in alpha (v0.1.0).
Requirements:
- Python SDK: Python >= 3.9
- Node.js SDK: Node.js >= 18 (required for global
fetch) - Go SDK: Go >= 1.21
Known Limitations:
- Upload integration tests require live S3 (env-gated)
- No retry circuit breaker (planned for v0.9.0 beta)
- No streaming support yet
Technical Details:
- Generated from OpenAPI spec using openapi-generator-cli 7.10.0
- Dependencies: Python (aiohttp, pydantic v2), Node.js (axios), Go (stdlib only)
Installation
Python
pip install spatialflow
Node.js
npm install @spatialflow/sdk
# or
yarn add @spatialflow/sdk
Go
go get github.com/spatialflow-io/spatialflow-go
Quick Start
Python
import asyncio
from spatialflow import SpatialFlow
async def main():
async with SpatialFlow(api_key="sf_xxx") as client:
# List geofences
response = await client.geofences.list()
for geofence in response.geofences:
print(f"{geofence.name}: {geofence.id}")
asyncio.run(main())
For complete Python SDK documentation, see the Python SDK Guide.
Node.js
import { SpatialFlow } from "@spatialflow/sdk";
const client = new SpatialFlow({ apiKey: "sf_xxx" });
// List geofences
const response = await client.geofences.appsGeofencesApiListGeofences();
for (const geofence of response.data.results) {
console.log(`${geofence.name}: ${geofence.id}`);
}
Go
package main
import (
"context"
"log"
"net/http"
"github.com/spatialflow-io/spatialflow-go/spatialflow"
)
func main() {
// Create client with API key
client, err := spatialflow.NewClient(
spatialflow.WithAPIKey("sf_your_api_key"),
)
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Make API requests using the HTTP client (includes auth, retry, User-Agent)
req, _ := http.NewRequestWithContext(ctx, "GET", client.BaseURL()+"/api/v1/geofences", nil)
resp, err := client.HTTPClient().Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// Check for API errors
if err := spatialflow.CheckResponse(resp); err != nil {
log.Fatal(err)
}
log.Printf("Got %d response", resp.StatusCode)
}
Features
All SDKs include:
- Authentication - API key and JWT token support
- Full CRUD - Geofences, workflows, webhooks, devices (via generated client or HTTP client)
- Pagination - Iterators for paginated endpoints
- Webhook Verification - HMAC-SHA256 signature validation
- Job Polling - Job status tracking with timeout handling
- File Uploads - GeoJSON, KML, GPX import helpers
- Typed Errors -
AuthenticationError,NotFoundError,ValidationError, etc.
Documentation
- Python SDK: Complete Python SDK Guide | GitHub
- Node.js SDK: GitHub
- Go SDK: GitHub
REST API
You can also use the REST API directly: