Developer Platform
The Geopera Developer Platform provides comprehensive APIs, SDKs, and tools for integrating satellite imagery into your applications.
Platform Overview
Our developer platform offers:
- RESTful APIs for imagery search, ordering, and processing
- Real-time webhooks for order status updates
- Multiple SDKs supporting Python, JavaScript, and R
- Comprehensive documentation with interactive examples
- Sandbox environment for testing and development
Quick Start
1. Get Your API Key
Sign up for a developer account at portal.geopera.com and generate your API key.
2. Make Your First API Call
curl -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"aoi": {
"type": "Polygon",
"coordinates": [[
[-122.4194, 37.7749],
[-122.4094, 37.7749],
[-122.4094, 37.7849],
[-122.4194, 37.7849],
[-122.4194, 37.7749]
]]
},
"date_range": {
"start": "2024-01-01",
"end": "2024-12-31"
},
"sensors": ["worldview-3"]
}' \
https://api.geopera.com/v1/search
3. Process the Results
{
"status": "success",
"data": {
"scenes": [
{
"scene_id": "WV03_20240315_104001_123456",
"sensor": "worldview-3",
"acquisition_date": "2024-03-15T10:40:01Z",
"cloud_cover": 5.2,
"resolution": 0.3,
"area_coverage": 98.5
}
],
"total_count": 1
}
}
Core APIs
Search API
Find satellite imagery matching your criteria:
Endpoint: POST /v1/search
Key Parameters:
aoi
: Area of Interest (GeoJSON geometry)date_range
: Temporal filtersensors
: Specific satellite sensorscloud_cover_max
: Maximum acceptable cloud coverageresolution_min/max
: Spatial resolution requirements
Order API
Place orders for imagery processing and delivery:
Endpoint: POST /v1/orders
Processing Options:
ortho
: Orthorectified imagerypansharpened
: Enhanced resolutionanalytics_ready
: Radiometrically correctedcustom
: Tailored processing workflows
Status API
Monitor order progress and download results:
Endpoint: GET /v1/orders/{order_id}
Status Values:
received
: Order acceptedprocessing
: Currently being processedcompleted
: Ready for downloadfailed
: Processing encountered errors
SDKs and Libraries
Python SDK
pip install geopera-sdk
import geopera
client = geopera.Client(api_key="your-key")
# Search for imagery
results = client.search(
aoi=my_polygon,
date_range=("2024-01-01", "2024-12-31"),
sensors=["worldview-3", "worldview-2"]
)
# Place an order
order = client.order(
scenes=results.scenes[:3],
processing_level="ortho",
output_format="geotiff"
)
# Monitor progress
while order.status != "completed":
time.sleep(30)
order.refresh()
# Download results
order.download(directory="./imagery")
JavaScript SDK
npm install @geopera/sdk
const Geopera = require('@geopera/sdk');
const client = new Geopera({ apiKey: 'your-key' });
// Async/await pattern
const results = await client.search({
aoi: myPolygon,
dateRange: ['2024-01-01', '2024-12-31'],
sensors: ['worldview-3']
});
const order = await client.createOrder({
scenes: results.scenes.slice(0, 3),
processingLevel: 'ortho'
});
// Using webhooks for status updates
order.onStatusChange((status) => {
console.log(`Order status: ${status}`);
if (status === 'completed') {
order.download('./downloads/');
}
});
R Package
install.packages("geopera")
library(geopera)
# Initialize client
client <- geopera_client(api_key = "your-key")
# Search imagery
results <- search_imagery(
client = client,
aoi = my_sf_polygon,
date_range = c("2024-01-01", "2024-12-31"),
sensors = c("worldview-3")
)
# Create order
order <- create_order(
client = client,
scenes = results$scenes[1:3, ],
processing_level = "ortho"
)
# Download when ready
download_order(client, order$order_id, "./imagery/")
Authentication Methods
API Key Authentication
Most common method for server-side applications:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.geopera.com/v1/search
OAuth 2.0
For web applications requiring user consent:
// Redirect to authorization server
window.location.href = `https://auth.geopera.com/oauth/authorize?
client_id=${CLIENT_ID}&
response_type=code&
scope=imagery:read imagery:order&
redirect_uri=${REDIRECT_URI}`;
// Handle callback and exchange code for token
const token = await exchangeCodeForToken(authorizationCode);
Service Account Keys
For server-to-server communication in enterprise environments:
from geopera import ServiceAccountClient
client = ServiceAccountClient(
service_account_file="path/to/service-account.json",
project_id="your-project-id"
)
Rate Limiting
API requests are subject to rate limits:
- Standard Tier: 1,000 requests/hour
- Professional Tier: 5,000 requests/hour
- Enterprise Tier: Custom limits
Rate limit headers in responses:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200
Webhooks
Receive real-time notifications about order status changes:
Setting Up Webhooks
client.create_webhook(
url="https://your-app.com/webhooks/geopera",
events=["order.completed", "order.failed"],
secret="your-webhook-secret"
)
Webhook Payload
{
"event": "order.completed",
"order_id": "ord_123456",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"download_urls": [
"https://downloads.geopera.com/orders/ord_123456/scene1.tif",
"https://downloads.geopera.com/orders/ord_123456/scene2.tif"
],
"processing_report": {
"total_scenes": 2,
"successful": 2,
"failed": 0
}
}
}
Error Handling
The API uses standard HTTP status codes and provides detailed error information:
Common Error Codes
400 Bad Request
: Invalid request parameters401 Unauthorized
: Invalid or missing API key403 Forbidden
: Insufficient permissions404 Not Found
: Resource not found429 Too Many Requests
: Rate limit exceeded500 Internal Server Error
: Server-side error
Error Response Format
{
"error": {
"code": "INVALID_AOI",
"message": "The provided area of interest is invalid",
"details": {
"field": "aoi",
"issue": "Polygon coordinates are malformed",
"suggestion": "Ensure coordinates follow GeoJSON specification"
}
}
}
Sandbox Environment
Test your integration safely:
- Base URL:
https://sandbox-api.geopera.com/v1/
- Sample data: Pre-loaded test imagery
- No billing: Free for development and testing
- Rate limits: Reduced limits for fair usage
Getting Help
- Documentation: Complete API reference
- Code Examples: Sample applications in multiple languages
- Developer Support: [email protected]
- Community Forum: Connect with other developers
- Status Page: status.geopera.com