From Channel creation to first smart message
Build a Universal Message visually, export an exact OpenAPI 3.1 contract, and integrate it from your server without guessing payload fields.
1. Create a Channel
Generate a scoped API key and store the secret only on your server.
2. Pair a recipient
Request a single-use QR for your own external user ID.
3. Send a Universal Message
Send the canonical Universal Message document with a stable idempotency key.
curl -X POST https://api.alertchannels.com/v1/messages \
-H "Authorization: Bearer aru_live_<key-id>.<secret>" \
-H "Idempotency-Key: order-84571-shipped-v1" \
-H "Content-Type: application/json" \
-d '{
"channel_id": "bG8mx",
"external_user_id": "customer-1001",
"language_code": "en",
"universal_message": {
"contract_id": "alertchannels.universal-message-authoring.v1",
"version": 1,
"target_contract_id": "alertchannels.universal-message-document.v1",
"target_document_version": 1,
"message": {
"title": "Order shipped",
"description": "Order #84571 is on the way.",
"priority": "normal"
},
"views": [],
"interactions": [],
"policies": {
"security": {},
"privacy": {},
"delivery": {},
"presentation": {}
},
"fallback": { "text": "Order #84571 shipped" },
"metadata": { "client_reference": "order-84571-status-shipped" }
}
}'Know exactly what every API key scope allows
Choose the smallest scopes your server needs, review their protected operations, and copy an example in your preferred language.
Generate the contract from the message you already designed
Compose is the safest API designer: every selected View and Interaction is validated against the same frozen registries used by Web, Android, and iOS before the OpenAPI YAML is produced.
Compose the real message
Choose the Channel, recipient, Views, Interactions, and delivery options that your integration needs.
Select OpenAPI 3.1
Open Developer integration in Compose and select OpenAPI. The contract updates from the current draft immediately.
Download and import
Download the YAML, then import it into Postman, Insomnia, Swagger tooling, or OpenAPI Generator.
Call from your server
Set the API key as a Bearer token and send a unique Idempotency-Key for every logical message.
How Views and Interactions map to OpenAPI
Views are rendered content blocks. Each block has a stable id, registry type, supported variant, and schema-validated data.
Interactions are recipient actions or inputs. They use the same four-field block shape, so generated clients can model both arrays consistently.
The generated contract includes the complete request envelope, Bearer authentication, Idempotency-Key, path parameters, response codes, and the concrete payload shape of the current draft.
"views": [
{
"id": "message_body",
"type": "text",
"variant": "default",
"data": { "text": "Order #84571 is on the way." }
}
],
"interactions": [
{
"id": "open_tracking",
"type": "link",
"variant": "open_url",
"data": { "target_ref": "https://example.com/orders/84571" }
}
]Every supported type and variant, in one place
Use these identifiers in Universal Message blocks. The Compose toolboxes provide the schema-safe fields and samples for every pair, while the OpenAPI generator packages your selected pairs into an integration-ready contract.
48
View types
125
View variants
20
Interaction types
62
Interaction variants
Browse all View types and variants48 types
textdefault · highlighted · compact · badge
rich_textdefault · article · compact · html
markdowndefault · documentation
codedefault · diff · terminal
quotedefault · testimonial
listsimple · grouped · ranked
key_valuecompact · card · financial
tablecompact · responsive · comparison
gridcards · tiles
checkliststatic · progress
statusdefault · success · warning · danger · banner
progressbar · steps · circular
gaugeradial · linear
time_countercountdown · elapsed · deadline
verification_codechallenge_time · one_time_display · pairing
metriccard · delta · compact · summary · distribution
chartbar · line · area · pie · donut
comparisonside_by_side · before_after
trendsparkline · timeline
imagesingle · hero
gallerygrid · carousel
videoinline · poster
audioplayer · voice_note
documentpreview · summary
attachmentdownloadable · bundle
barcodeqr · code128
timelinevertical · compact
workflowsteps · status_map
profileperson · organization
contactperson · business
locationaddress · coordinates
mappin · route
calendarevent · schedule
receipt_summaryretail · restaurant
transaction_summarydebit_credit · transfer · card_payment
invoice_summarydefault · overdue
line_itemsretail_compact · invoice_table
ticket_summaryevent · travel · boarding_pass
prescription_summarydefault · refill
bill_summaryutility · telecom · medical · government_fee
appointment_summaryhealthcare · service · government
claim_summaryinsurance · warranty
shipment_summaryparcel · delivery
credential_summarycertificate · permit · membership · identity
attendance_summaryschool · workforce
order_summaryretail · delivery · service
statement_summaryfinancial · usage
reservation_summaryhotel · restaurant · service
Browse all Interaction types and variants20 types
linkopen_url · deep_link · open_record · open_directions
downloadsingle_file · document · bundle
copyvalue · code · reference
sharemessage · document · receipt
contact_actioncall · email · message
calendar_actionadd_event · update_event · remove_event
decisionapprove_decline · yes_no · accept_reject · multi_option
pollsingle_choice · multiple_choice · ranked_choice
ratingstars · numeric · emoji · nps
reactionemoji · acknowledgement
confirmationconfirm_cancel · acknowledge
forminline · dynamic · wizard · survey
uploadsingle_file · multiple_files · photo_capture · document_scan
signaturedraw · type · confirm
otpchallenge_input · totp_verify
location_inputcurrent_location · select_on_map · address_input
date_time_inputdate · time · date_time · time_range
workflow_triggerinternal · approval_workflow · automation
callbackhttps_post · https_put · signed_webhook
commandinternal_command · protected_command
