# Xulo docs > Developer documentation for Xulo: iOS push notifications and a native in-app card, sent from the iOS SDK, the dashboard, an agent, or the REST API. Every page has a Markdown twin at the same address with .md added. The full text of every page is https://docs.xulo.io/llms-full.txt. Product facts and pricing: https://xulo.io/llms.txt ## Getting started - [Xulo documentation](https://docs.xulo.io/): Send iOS push notifications and show a native in-app card, from the iOS SDK, the dashboard, an agent, or the REST API. Markdown: https://docs.xulo.io/index.md - [Quickstart](https://docs.xulo.io/quickstart): Create an app, add the iOS SDK, and send a push to your own iPhone. Markdown: https://docs.xulo.io/quickstart.md - [Platform support](https://docs.xulo.io/platform-support): Xulo supports native iOS apps. What the SDK needs from your project and your devices. Markdown: https://docs.xulo.io/platform-support.md ## Concepts - [Apps and keys](https://docs.xulo.io/concepts/apps-and-keys): An app is one iOS bundle id with its own App ID. Which key goes in the app, which stays on your server, and how an agent signs in. Markdown: https://docs.xulo.io/concepts/apps-and-keys.md - [People and devices](https://docs.xulo.io/concepts/people-and-devices): The Subscription ID is the install, the Xulo ID is the person, and the External ID is the id your app already uses. Markdown: https://docs.xulo.io/concepts/people-and-devices.md - [Tags](https://docs.xulo.io/concepts/tags): Tags are text keys and values that your app writes on a person. Segments, REST targeting and in-app cards read them. Markdown: https://docs.xulo.io/concepts/tags.md - [Segments](https://docs.xulo.io/concepts/segments): Four built-in audiences, and saved segments that filter by language, country, app version, tag, spend and sessions. Markdown: https://docs.xulo.io/concepts/segments.md - [Notifications](https://docs.xulo.io/concepts/notifications): What a push carries, how languages are picked, how images and links work, and the payload your app receives. Markdown: https://docs.xulo.io/concepts/notifications.md - [In-app cards](https://docs.xulo.io/concepts/in-app-cards): A native card drawn inside the app, on an open or when the app calls a name. It does not need push permission. Markdown: https://docs.xulo.io/concepts/in-app-cards.md - [Drafts and approval](https://docs.xulo.io/concepts/drafts-and-approval): Which sends wait for a person and which go out at once. The dashboard and an agent can hold a draft. A REST API call sends without an approval step. Markdown: https://docs.xulo.io/concepts/drafts-and-approval.md - [Delivery and analytics](https://docs.xulo.io/concepts/delivery-and-analytics): What delivered, clicked, failed and skipped mean, how card results are counted, and what the Return view shows. Markdown: https://docs.xulo.io/concepts/delivery-and-analytics.md - [Purchases and sessions](https://docs.xulo.io/concepts/purchases-and-sessions): How the SDK records purchases and refunds, how sessions are timed, and where both show up. Markdown: https://docs.xulo.io/concepts/purchases-and-sessions.md ## iOS SDK - [Install the iOS SDK](https://docs.xulo.io/ios/install): Add the Xulo Swift package to your app and, for images and the long-press view, to its two notification extensions. Markdown: https://docs.xulo.io/ios/install.md - [APNs setup](https://docs.xulo.io/ios/apns-setup): Give Xulo the Apple key or certificate it sends with. A .p8 auth key is recommended and can be shared by every app on the same Apple account. Markdown: https://docs.xulo.io/ios/apns-setup.md - [Capabilities](https://docs.xulo.io/ios/capabilities): Turn on Push Notifications, and share one App Group between the app and both notification extensions. Markdown: https://docs.xulo.io/ios/capabilities.md - [Initialize the SDK](https://docs.xulo.io/ios/initialize): Start the SDK when the app launches, pass Apple's token through, and forward notification taps. Markdown: https://docs.xulo.io/ios/initialize.md - [Permission prompt](https://docs.xulo.io/ios/permission-prompt): Ask for notification permission with one call. A grant registers for the push token. Markdown: https://docs.xulo.io/ios/permission-prompt.md - [Rich push](https://docs.xulo.io/ios/rich-push): Add the Notification Service and Notification Content extensions for images, the long-press view and the action button. Markdown: https://docs.xulo.io/ios/rich-push.md - [Deep links](https://docs.xulo.io/ios/deep-links): Open the right screen when a push or a card is tapped, with Xulo.onOpen. Markdown: https://docs.xulo.io/ios/deep-links.md - [Identity and tags](https://docs.xulo.io/ios/identity-and-tags): Log a person in with your own user id, log them out, and write tags. Markdown: https://docs.xulo.io/ios/identity-and-tags.md - [Purchases](https://docs.xulo.io/ios/purchases): Record a purchase or a refund from the app, in minor units of its currency. Markdown: https://docs.xulo.io/ios/purchases.md - [In-app](https://docs.xulo.io/ios/in-app): The SDK asks for a card when the app becomes active. Call a named card yourself with Xulo.call. Markdown: https://docs.xulo.io/ios/in-app.md - [Troubleshooting](https://docs.xulo.io/ios/troubleshooting): Turn on the SDK log, then check the common causes when a device does not register or a push does not arrive. Markdown: https://docs.xulo.io/ios/troubleshooting.md - [Demo app](https://docs.xulo.io/ios/demo-app): A sample iOS app that runs the SDK against your own dashboard app and checks each call. Markdown: https://docs.xulo.io/ios/demo-app.md ## REST API - [REST API](https://docs.xulo.io/api): Send a push from your server with one JSON call, and read its counts. One REST key per app. Markdown: https://docs.xulo.io/api.md - [Authentication](https://docs.xulo.io/api/authentication): Send the app's REST API key in a header. Keys are per app, shown once, can be locked to IP addresses, and can be revoked. Markdown: https://docs.xulo.io/api/authentication.md - [Send notification](https://docs.xulo.io/api/send-notification): POST /api/v1/notifications sends a push to one audience of one app, now or at a set time. Markdown: https://docs.xulo.io/api/send-notification.md - [Targeting](https://docs.xulo.io/api/targeting): Name one target per call. A segment, a tag, a list of Subscription IDs, or a list of External IDs. Markdown: https://docs.xulo.io/api/targeting.md - [Scheduling](https://docs.xulo.io/api/scheduling): Send at a set time with send_after, or at the same clock time in each device's own time zone with delayed_option. Markdown: https://docs.xulo.io/api/scheduling.md - [Notification stats](https://docs.xulo.io/api/notification-stats): GET /api/v1/notifications/{id} returns the status, progress and counts of one push send. Markdown: https://docs.xulo.io/api/notification-stats.md - [Idempotency](https://docs.xulo.io/api/idempotency): Send an Idempotency-Key header or an idempotency_key field so that a retried call does not send the same push twice. Markdown: https://docs.xulo.io/api/idempotency.md - [Rate limits](https://docs.xulo.io/api/rate-limits): Each REST key has its own request buckets. The headers on each response show the limit, what is left and when it refills. Markdown: https://docs.xulo.io/api/rate-limits.md - [Errors](https://docs.xulo.io/api/errors): Status codes and error bodies of the REST API, and the validation messages you can get back. Markdown: https://docs.xulo.io/api/errors.md