Dynamic Ingest API

Update dynamic widget feeds programmatically. Content field names match your layout's derived schema (dynamic bindings).

Endpoint

POST https://glance-api.fly.dev/ingest/{feed_id}
Authorization: Bearer {write_key}
Content-Type: application/json

Find the feed ID and write key on the feed detail page in the iOS app or web console. Keep the write key secret.

Request body

{
  "schema_type": "dynamic",
  "template_id": "YOUR_UI_TEMPLATE_UUID",
  "content": {
    "revenue": 12450,
    "headline": "Today's revenue"
  },
  "metadata": {
    "source": "my-backend"
  },
  "intent": {
    "update_widget": true,
    "send_push": false
  }
}
  • template_id — UUID of the layout (UI template) attached to the feed.
  • content — object keyed by binding names from the derived schema (without {{ }} wrappers).
  • intent — optional; controls widget update and push behavior (same as legacy feeds).

Validation

Glance validates content against the layout's derived schema. Missing required fields or wrong types return a 400 response with details. See Upload Content for field types.

Legacy schema ingest (Summary, Status, …) uses a different payload shape. See Legacy Webhook API.