Overview

X-CARD delivers in-app announcement cards without redeploying your front end. With a single API you can create, sort, expire, and measure operational messages that render across web and mobile surfaces.

Quick Start

  1. Visit https://card.xabcstack.com to see sample cards and sign in using your sk- prefixed XAPI private key for management calls.
  2. Call POST /x-card to publish a card with title, content, links, and lifetime in days.
  3. Fetch cards on the client with GET /x-card/{pk-...}β€”the public key can safely live in front-end code.
  4. Update copy or priority via PUT /x-card/{id} and remove obsolete cards using DELETE /x-card/{id}.

Key Capabilities

  • Centralized content drops: Priority and expiration fields control ordering and auto-offline behavior.
  • Zero-deploy updates: All copy and imagery lives behind the API, enabling rapid ops iteration.
  • Multi-channel ready: The same public key feeds web, native, or desktop clients securely.
  • Event hooks: Create/update/delete events emit to the event bus for downstream dashboards or audits.

API Reference

MethodPathDescription
POST/x-cardCreate a card (requires sk- private key)
GET/x-cardAdmin view of cards for the account (all=true shows history)
GET/x-card/{pk-...}Fetch public card list with an optional limit
PUT/POST/x-card/{id}Update card metadata or priority
DELETE/x-card/{id}Delete a card

Public endpoints do not need authentication; private endpoints return full management data.

Example: Publish a Maintenance Notice

export XAPI_KEY="your-xapi-key" # sk- prefixed key

curl -X POST https://api.xabcstack.com/x-card \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $XAPI_KEY" \
  -d '{
      "title": "Scheduled Maintenance",
      "content": "We'll upgrade systems on Sep 1, 02:00-04:00 UTC. Please save work in advance.",
      "link": "https://status.yoursite.com",
      "priority": 10,
      "days": 3
    }'

FAQ

  • Can I attach images? Include the image_url field during creation and clients will render it inline.
  • Limit card impressions? Set max_views to hide the card after a number of displays.
  • Bulk operations? Use GET /x-card?all=true to fetch all cards and synchronize with your admin tools via the event bus.