> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getsinbad.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getsinbad.com/_mcp/server.

# Integration overview

> Which parts of your product call Sinbad, with which credential, and in what order.

An integration has two halves. Your server holds the partner secret and handles anything that affects a customer's identity or your partner configuration. Your customer app holds only the session token and handles the trade itself.

## Who calls what

| Stage                            | Runs on     | Credential     | Main calls                                                                                                                                                                                                                                                                    |
| -------------------------------- | ----------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authenticate the customer        | Your server | Partner secret | [`POST /v1/sessions`](https://docs.getsinbad.com/api-reference/sessions/create-customer-session)                                                                                                                                                                                                                                   |
| Prepare the customer's account   | Your app    | Session token  | [`GET /v1/me`](https://docs.getsinbad.com/api-reference/customer-profile/get-customer-profile), [`POST /v1/me/payment-methods`](https://docs.getsinbad.com/api-reference/payment-accounts/create-saved-payment-method)                                                                                                                                                                                |
| Find an offer and fund the trade | Your app    | Session token  | [`POST /v1/offers/best`](https://docs.getsinbad.com/api-reference/offers-and-breakdowns/find-best-offer), [`POST /v1/trade-breakdowns`](https://docs.getsinbad.com/api-reference/offers-and-breakdowns/create-trade-breakdown), [`POST /v1/transactions`](https://docs.getsinbad.com/api-reference/transactions/submit-prepared-transaction)                                                                                                           |
| Settle the trade                 | Your app    | Session token  | [`POST /v1/trades/{tradeId}/actions/{action}/execution`](https://docs.getsinbad.com/api-reference/trade-actions/prepare-partner-customer-action), [`POST /v1/trades/{tradeId}/messages`](https://docs.getsinbad.com/api-reference/trade-messages/send-partner-trade-message), [`POST /v1/trades/{tradeId}/proof`](https://docs.getsinbad.com/api-reference/payment-proof/upload-partner-trade-proof) |
| Keep your records current        | Your server | Partner secret | [`GET /v1/trades`](https://docs.getsinbad.com/api-reference/trades/list-partner-trades), [`POST /v1/webhooks`](https://docs.getsinbad.com/api-reference/webhooks/create-webhook)                                                                                                                                                                                            |

## 1. Authenticate the customer on your server

Use your existing login. Associate your own stable user ID with `partnerUserId` on every session request. Never use an identifier that can change, such as an email address.

## 2. Prepare the customer's account

Your app uses the session token to read the customer's profile and to save a payment account from the catalog's required fields. See [Profile and preferences](/customer) and [Saved payment accounts](/payment-accounts).

## 3. Offer a BUY or SELL journey

Your app reads the exact terms, shows them to the customer, and asks the customer's wallet to sign the calls Sinbad prepares. The customer's wallet signs and sends every transaction. See the [Buy walkthrough](/buy-walkthrough) and [Sell walkthrough](/sell-walkthrough).

## 4. Keep your view current

Refresh trade history from your app, and use signed webhooks for server-side reconciliation. See [Trades and history](/trade-history) and [Webhooks](/webhooks).