# Expys > The Expys API and SDKs: browse offers, redeem with points, manage members and wallets, and embed a concierge - in TypeScript, Swift, and Kotlin. ## Docs - [Read bucketed analytics over a date range](https://docs.expys.com/api-reference/analytics/read-bucketed-analytics-over-a-date-range.md) - [Read per-offer analytics](https://docs.expys.com/api-reference/analytics/read-per-offer-analytics.md) - [Read the org's analytics rollup](https://docs.expys.com/api-reference/analytics/read-the-orgs-analytics-rollup.md) - [Exchange an Org-API-Key and external user id for a member token](https://docs.expys.com/api-reference/auth/exchange-an-org-api-key-and-external-user-id-for-a-member-token.md) - [List a conversation's messages, newest-first, cursor-paged](https://docs.expys.com/api-reference/conversations/list-a-conversations-messages-newest-first-cursor-paged.md) - [List a member's chat conversations, newest-activity-first](https://docs.expys.com/api-reference/conversations/list-a-members-chat-conversations-newest-activity-first.md) - [Send a message into a member's conversation (idempotent)](https://docs.expys.com/api-reference/conversations/send-a-message-into-a-members-conversation-idempotent.md) - [Server-Sent Events stream of a member's conversation. Each event is `data: ` (id, authorID, type, body, createdAt). Comment lines `: heartbeat` keep the connection alive. Only NEW, member-visible messages are sent; use the messages endpoint for history.](https://docs.expys.com/api-reference/conversations/server-sent-events-stream-of-a-members-conversation-each-event-is-`data:-`-id-authorid-type-body-createdat-comment-lines-`:-heartbeat`-keep-the-connection-alive-only-new-member-visible-messages-are-sent;-use-the-messages-endpoint-for-history.md) - [Resolve a member's tier and budget](https://docs.expys.com/api-reference/eligibility/resolve-a-members-tier-and-budget.md) - [API reference](https://docs.expys.com/api-reference/introduction.md): The interactive Expys /v1 reference and Try it playground, generated from the OpenAPI spec - how to authenticate, which token each tag needs, and where to read the streaming and webhook concepts. - [Read a VIP member's tier, profile, wallet, and redemption counts](https://docs.expys.com/api-reference/members/read-a-vip-members-tier-profile-wallet-and-redemption-counts.md) - [Remove (offboard) a VIP member](https://docs.expys.com/api-reference/members/remove-offboard-a-vip-member.md) - [Upsert a VIP member's tier and profile](https://docs.expys.com/api-reference/members/upsert-a-vip-members-tier-and-profile.md) - [List offers available to the authenticated org](https://docs.expys.com/api-reference/offers/list-offers-available-to-the-authenticated-org.md) - [Create a redemption (booking request) for an offer](https://docs.expys.com/api-reference/redemptions/create-a-redemption-booking-request-for-an-offer.md) - [List redemptions, newest-first, cursor-paged](https://docs.expys.com/api-reference/redemptions/list-redemptions-newest-first-cursor-paged.md) - [Read a redemption by id](https://docs.expys.com/api-reference/redemptions/read-a-redemption-by-id.md) - [Credit points to a VIP member's wallet](https://docs.expys.com/api-reference/wallet/credit-points-to-a-vip-members-wallet.md) - [List a member's points ledger entries, newest-first](https://docs.expys.com/api-reference/wallet/list-a-members-points-ledger-entries-newest-first.md) - [Read the authenticated member's wallet balance](https://docs.expys.com/api-reference/wallet/read-the-authenticated-members-wallet-balance.md) - [List the org+environment's webhook endpoints](https://docs.expys.com/api-reference/webhooks/list-the-org+environments-webhook-endpoints.md) - [Register an outbound webhook endpoint (secret returned once)](https://docs.expys.com/api-reference/webhooks/register-an-outbound-webhook-endpoint-secret-returned-once.md) - [Soft-disable a webhook endpoint](https://docs.expys.com/api-reference/webhooks/soft-disable-a-webhook-endpoint.md) - [Authentication and token refresh](https://docs.expys.com/authentication.md): The two-token model: your backend mints short-lived member tokens with a secret Org-API-Key, and the app refreshes them. - [Environments](https://docs.expys.com/environments.md): Sandbox and live share one host - the environment is selected by the key you exchange, not by the URL. - [Analytics](https://docs.expys.com/guides/analytics.md): Program-wide rollups from your backend: a summary of members and points, per-offer performance, and a timeseries over a window - all server-side with the Org-API-Key. - [Configuration reference](https://docs.expys.com/guides/configuration.md): Every client option across the TypeScript, Swift, and Kotlin SDKs - defaults, types, and what each one does. - [Conversations](https://docs.expys.com/guides/conversations.md): The member-mode concierge: list conversations, page through message history, and send messages. Live incoming messages stream over SSE. - [Eligibility](https://docs.expys.com/guides/eligibility.md): Read a member's tier and wallet in one call, so the app can gate offers and show balances up front. - [Errors](https://docs.expys.com/guides/errors.md): One error taxonomy across all three SDKs: typed errors, stable machine-readable codes, and a request id for support. - [Members and tiers](https://docs.expys.com/guides/members.md): Upsert member profiles and tiers, read a member summary with wallet and redemption counts, and remove members - all server-side with the Org-API-Key. - [Offers](https://docs.expys.com/guides/offers.md): List the catalog of offers a member can redeem, with points pricing, expiry, and cursor pagination. - [Points and wallet](https://docs.expys.com/guides/points-and-wallet.md): The end-to-end points loop: mint server-side with the Org-API-Key, spend by redeeming offers, read the balance, and audit every change in the wallet ledger. - [Redemptions](https://docs.expys.com/guides/redemptions.md): Redeem an offer, spend points safely with an idempotency key, and follow the redemption lifecycle from submitted to completed. - [Retries and idempotency](https://docs.expys.com/guides/retries-and-idempotency.md): Automatic retries with full-jitter backoff on 429/5xx, and idempotency keys that make writes safe to repeat. - [Server-side API](https://docs.expys.com/guides/server-mode.md): The operations that run only on your backend with the secret Org-API-Key: token exchange, point minting, member management, analytics, and webhooks. - [Streaming messages](https://docs.expys.com/guides/streaming.md): Live concierge messages over Server-Sent Events, consumed as an AsyncIterable, AsyncStream, or Flow. - [Versioning](https://docs.expys.com/guides/versioning.md): How the /v1 API and the Expys SDKs evolve - SemVer, what counts as breaking, the spec-vs-SDK version relationship, and deprecation timelines. - [Wallet](https://docs.expys.com/guides/wallet.md): Read a member's points balance and lifetime totals, in the org's points currency. - [Webhooks](https://docs.expys.com/guides/webhooks.md): Subscribe to lifecycle events with signed, retried deliveries. Server-side: managed with the Org-API-Key, verified with a per-endpoint signing secret. - [Expys API](https://docs.expys.com/introduction.md): Embed offers, redemptions, points, members, and a concierge into your app with one REST API and three first-class SDKs. - [Quickstart](https://docs.expys.com/quickstart.md): Install an SDK, get a member token, and run your first browse-and-redeem flow against the sandbox. - [SDK differences](https://docs.expys.com/sdks/differences.md): What is guaranteed identical across the TypeScript, Swift, and Kotlin SDKs - and the handful of intentional, idiomatic per-language differences. - [Kotlin SDK](https://docs.expys.com/sdks/kotlin.md): Install com.expys:sdk from Maven Central and embed Expys into your Android or JVM app - coroutine-native, OkHttp, one artifact for server and Android. - [SDKs overview](https://docs.expys.com/sdks/overview.md): Three first-class SDKs - TypeScript, Swift, and Kotlin - that share one method surface, one configuration vocabulary, and one error taxonomy. - [Swift SDK](https://docs.expys.com/sdks/swift.md): Install ExpysSDK via SwiftPM or CocoaPods and embed Expys into your iOS, macOS, or server-side Swift app - async/await, URLSession, zero runtime dependencies. - [TypeScript SDK](https://docs.expys.com/sdks/typescript.md): Install @expys/sdk and embed Expys into your web, React Native, or Node app - fetch-only, with zero runtime dependencies and types included. ## OpenAPI Specs - [openapi](https://docs.expys.com/api-reference/openapi.json)