Developer Overview
Welcome to the Joryio developer documentation. This guide will help you integrate Joryio into your applications.
What Can You Build?
With Joryio's developer platform, you can:
- Track user behavior across web, iOS, and Android
- Manage user profiles and attributes programmatically
- Send custom events to power segmentation and analytics
- Integrate with webhooks for real-time event notifications
- Trigger campaigns via API
- Query analytics data for custom dashboards
Platform Architecture
One track() call powers every surface — a Kafka-based streaming spine fans events out in real time.
Events fan out to analytics, audience targeting, ML reward signals, and journey trigger evaluation the moment they arrive. The same spine feeds Data Streaming, which delivers your events onward to your own warehouse, storage, or analytics stack, and Warehouse sync brings your existing data in.
Authentication
Joryio uses two types of authentication:
SDK Keys (Client-Side)
For tracking from web and mobile apps:
jry_sdk_web_abc123... (Web SDK)
jry_sdk_ios_def456... (iOS SDK)
jry_sdk_android_ghi789... (Android SDK)
Security: Safe to include in client-side code. Limited to tracking operations only.
API Keys (Server-Side)
For server-to-server API calls:
jry_live_xyz789... (Production)
jry_test_abc123... (Testing)
Security: Must be kept secret. Never expose in client-side code. Full access to all API operations.
Never commit API keys to version control or expose them in client-side code. Use environment variables.
Quick Integration
1. Web Tracking
import JoryioSDK from '@joryio/web-sdk';
const joryio = new JoryioSDK({
sdkKey: 'jry_sdk_web_your_key_here'
});
// Identify user
joryio.identify('user_123');
joryio.setAttributes({
email: 'user@example.com',
plan: 'premium',
});
// Track event
joryio.track('Button Clicked', {
button: 'signup',
page: 'homepage'
});
2. Server-Side API
const response = await fetch('https://api-eu1.joryio.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer jry_live_your_api_key_here'
},
body: JSON.stringify({
userId: 'user_123',
email: 'user@example.com',
attributes: {
plan: 'premium',
signupDate: '2024-01-15'
}
})
});
SDKs & Libraries
Official SDKs
| Platform | Status | Documentation |
|---|---|---|
| Web (JavaScript) | Available | Web SDK Guide |
| iOS (Swift) | Available | iOS SDK Guide |
| Android (Kotlin) | Available | Android SDK Guide |
| React Native | Available | React Native SDK Guide |
REST API
Full REST API for all operations:
- API Reference
- Base URL:
https://api-eu1.joryio.com - Format: JSON
- Authentication: bearer API key (
Authorization: Bearer jry_live_...)
Core Concepts
Each concept has its own guide - this page stays a map:
- Apps - one per platform, each with its own SDK key.
- Users - profiles, attributes, aliases, and the create/update API.
- Events - naming conventions, properties,
identifyvstrack, and debugging. - Segments - dynamic user groups over attributes and behavior.
Development Workflow
1. Development Environment
# Use test API keys
export JORYIO_API_KEY=jry_test_abc123...
Enable debug mode in the Web SDK:
const joryio = new JoryioSDK({
sdkKey: 'jry_sdk_web_test_...',
enableDebug: true
});
2. Testing
- Use test API keys for development
- Create test segments and campaigns
- Verify events in dashboard
- Test webhook endpoints locally (use ngrok)
3. Production Deployment
- Switch to production API keys
- Disable debug mode
- Monitor error rates
- Set up webhooks for critical events
Rate Limits & Errors
Rate-limit behavior (429 + Retry-After), the standard error body, and status codes are documented once, in the API Overview: Rate Limiting · HTTP Status Codes.
Getting Events Out
To receive Joryio events on your own endpoint in real time, add a Webhook destination in Data Streaming - every event is POSTed as JSON to your HTTPS URL. Journeys can also call your systems per-contact with the Webhook node, and failed webhook deliveries can be inspected and retried in Settings → Logs & Monitoring (Webhook retries).
Best Practices
- Event naming - Title Case, Object + Action (
Order Completed): see naming conventions. - Batching & delivery - the SDKs queue and batch automatically (up to 500 events per batch); see how tracking works.
- Identify early, reset on logout - see identify vs track.