Documentation
Learn how to integrate Glance into your workflows and display real-time data on your mobile devices.
Quick Start
- Create a Feed: Go to your dashboard and click "Create Feed"
- Choose a Schema: Select the type of data you want to display (Summary, Status, Counter, or Approval)
- Get Your Webhook URL: Copy the webhook URL and write key from the dialog
- Send Data: Make HTTP POST requests to your webhook URL with your data
- Add to Home Screen: Install the Glance iOS app and add widgets to your home screen
Authentication
All webhook requests must include your feed's write key in the Authorization header as a Bearer token.
curl -X POST "https://api.glance.app/ingest/YOUR_FEED_ID" \
-H "Authorization: Bearer YOUR_WRITE_KEY" \
-H "Content-Type: application/json" \
-d '{ ... }'Security: Keep your write keys secret! Never commit them to public repositories or share them publicly.
Summary Schema
Display a title with primary and optional secondary values. Perfect for metrics like revenue, account balances, or any key-value data.
Use Cases
- Daily/Monthly Revenue (e.g., "$12,345" with "+15%" change)
- Account Balance (e.g., "Balance: $5,000")
- Stock Prices (e.g., "AAPL: $150.25" with "+2.3%")
- Weather Data (e.g., "San Francisco" with "72°F")
Request Format
{
"schema_type": "summary",
"content": {
"title": "Daily Revenue",
"primary_value": "$12,345",
"secondary_value": "+15%" // optional
},
"metadata": {
"source": "stripe",
"external_id": "rev-2026-02-08"
},
"intent": {
"update_widget": true,
"send_push": true
}
}Example: Stripe Revenue
curl -X POST "https://api.glance.app/ingest/YOUR_FEED_ID" \
-H "Authorization: Bearer YOUR_WRITE_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_type": "summary",
"content": {
"title": "Today's Revenue",
"primary_value": "$1,247.50",
"secondary_value": "+18%"
},
"metadata": {
"source": "stripe-webhook"
},
"intent": {
"update_widget": true,
"send_push": false
}
}'Status Schema
Display system status with visual indicators (success, warning, error). Ideal for monitoring uptime, deployments, or health checks.
Use Cases
- API Health Monitoring (e.g., "All Systems Operational")
- Deployment Status (e.g., "Deploy Succeeded")
- Server Uptime (e.g., "Online - 99.9% uptime")
- Build Status (e.g., "CI/CD: Passing")
Request Format
{
"schema_type": "status",
"content": {
"title": "API Status",
"status": "success", // "success", "warning", or "error"
"message": "All systems operational",
"details": "Last checked: 2 min ago" // optional
},
"intent": {
"update_widget": true,
"send_push": true // only send push on errors
}
}Example: Server Health Check
curl -X POST "https://api.glance.app/ingest/YOUR_FEED_ID" \
-H "Authorization: Bearer YOUR_WRITE_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_type": "status",
"content": {
"title": "Production API",
"status": "success",
"message": "Fully Connected",
"details": "Response time: 45ms"
},
"intent": {
"update_widget": true,
"send_push": false
}
}'Counter Schema
Display numerical counts with optional trends and units. Perfect for tracking signups, users, events, or any incrementing metrics.
Use Cases
- Active Users (e.g., "2,314 users" with "+12% trend")
- Total Signups (e.g., "1,543 signups this week")
- Inventory Count (e.g., "48 items in stock")
- Queue Length (e.g., "12 jobs pending")
Request Format
{
"schema_type": "counter",
"content": {
"title": "Active Users",
"count": 2314,
"unit": "users", // optional
"trend": "up", // "up", "down", or "flat" - optional
"trendValue": "+12%", // optional
"trendSemantic": "positive", // "positive", "negative", "neutral" - optional
"subtitle": "This week" // optional
},
"intent": {
"update_widget": true,
"send_push": false
}
}Example: User Signups
curl -X POST "https://api.glance.app/ingest/YOUR_FEED_ID" \
-H "Authorization: Bearer YOUR_WRITE_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_type": "counter",
"content": {
"title": "New Signups",
"count": 127,
"unit": "users",
"trend": "up",
"trendValue": "+23%",
"trendSemantic": "positive",
"subtitle": "Last 24 hours"
},
"intent": {
"update_widget": true,
"send_push": false
}
}'Approval Schema
Request user approval via push notification with interactive actions. The user's response is sent back to your webhook callback URL.
Use Cases
- Deployment Approvals (e.g., "Deploy v2.3.0 to production?")
- Expense Approvals (e.g., "Approve $5,000 expense?")
- Access Requests (e.g., "Grant admin access to John?")
- Critical Alerts (e.g., "Server CPU at 95% - restart?")
Request Format
{
"schema_type": "approval",
"content": {
"description": "Deploy v2.3.0 to production?"
},
"metadata": {
"deployment_id": "deploy-123"
},
"intent": {
"send_push": true // approval always sends push
},
"callback": {
"url": "https://your-api.com/webhook/approval",
"method": "POST"
}
}Callback Response
When the user taps an action (Approve/Reject/Defer), Glance will POST to your callback URL:
{
"feed_id": "abc123...",
"action_type": "approve", // "approve", "reject", or "defer"
"event_id": "456",
"timestamp": "2026-02-08T12:34:56Z",
"metadata": {
"deployment_id": "deploy-123"
}
}Example: Deployment Approval
curl -X POST "https://api.glance.app/ingest/YOUR_FEED_ID" \
-H "Authorization: Bearer YOUR_WRITE_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_type": "approval",
"content": {
"description": "Deploy v2.3.0 to production?"
},
"metadata": {
"deployment_id": "v2.3.0",
"environment": "production"
},
"intent": {
"send_push": true
},
"callback": {
"url": "https://api.yourapp.com/deployments/callback",
"method": "POST"
}
}'Zapier Integration
Use Zapier's Webhooks by Zapier action to send data to Glance from thousands of apps.
Setup Steps
- Create a Zap: Choose your trigger app (e.g., Stripe, Gmail, etc.)
- Add Action: Search for "Webhooks by Zapier" and select "POST"
- Configure URL: Enter your Glance webhook URL
- Set Headers:
Authorization: Bearer YOUR_WRITE_KEYContent-Type: application/json
- Payload Type: Select "json"
- Data: Map your trigger fields to the Glance schema format
Example: Stripe Payment → Summary
In the Webhooks by Zapier "Data" field, use:
{
"schema_type": "summary",
"content": {
"title": "Latest Payment",
"primary_value": "{{amount}}",
"secondary_value": "{{customer_email}}"
},
"intent": {
"update_widget": true,
"send_push": true
}
}Make (Integromat) Integration
Use Make's HTTP module to send data to Glance from your automation scenarios.
Setup Steps
- Add HTTP Module: Search for "HTTP" and select "Make a request"
- URL: Enter your Glance webhook URL
- Method: POST
- Headers:
- Name:
Authorization, Value:Bearer YOUR_WRITE_KEY - Name:
Content-Type, Value:application/json
- Name:
- Body type: Raw
- Content type: JSON (application/json)
- Request content: Map your data to the Glance schema
Tip: Use Make's JSON module to build your payload structure before passing it to the HTTP module.
n8n Integration
Use n8n's HTTP Request node to send data to Glance from your self-hosted workflows.
Setup Steps
- Add HTTP Request Node: Drag the HTTP Request node into your workflow
- Authentication: Select "Header Auth"
- Name:
Authorization - Value:
Bearer YOUR_WRITE_KEY
- Name:
- Request Method: POST
- URL: Your Glance webhook URL
- Body Content Type: JSON
- Specify Body: Using Fields Below
- Body: Add fields matching your schema
Example Node Configuration
{
"schema_type": "counter",
"content": {
"title": "{{ $json.metric_name }}",
"count": {{ $json.count }},
"trend": "{{ $json.trend }}"
},
"intent": {
"update_widget": true,
"send_push": false
}
}Rate Limits & Quotas
Rate limits are enforced per feed based on your subscription tier.
| Plan | Events/Minute | Events/Day | History |
|---|---|---|---|
| Free | 6 | 100 | 7 days |
| Pro | 60 | 1,000 | 14 days |
| Power | 90 | 2,400 | 45 days |
Throttling: If you exceed your rate limit, requests will be rejected with a 429 status code. Events marked as "throttled" appear in your event log but don't update widgets or send push notifications.