> ## Documentation Index
> Fetch the complete documentation index at: https://cobo.com/developers/llms.txt
> Use this file to discover all available pages before exploring further.

# Get swap quote

> This operation retrieves the current market exchange rate and estimated service fee. You need to provide `wallet_id`, `pay_token_id`, and `receive_token_id`, along with either `pay_amount` or `receive_amount`.


> [!TIP]
>
> Try [Cobo WaaS Skill](https://cobo.com/developers/v2/guides/overview/cobo-waas-skill.md) in your AI coding assistant (Claude Code, Cursor, etc.). Describe your needs in natural language to auto-generate production-ready SDK code and debug faster 🚀

```python Python theme={null}
import cobo_waas2
from cobo_waas2.models.swap_quote import SwapQuote
from cobo_waas2.rest import ApiException
from pprint import pprint

# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
    # Replace `<YOUR_PRIVATE_KEY>` with your private key
    api_private_key="<YOUR_PRIVATE_KEY>",
    # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
    host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = cobo_waas2.SwapsApi(api_client)
    wallet_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
    pay_token_id = "ETH"
    receive_token_id = "USDT"
    pay_amount = "1.5"
    receive_amount = "2000"

    try:
        # Get swap quote
        api_response = api_instance.get_swap_quote(
            wallet_id,
            pay_token_id,
            receive_token_id,
            pay_amount=pay_amount,
            receive_amount=receive_amount,
        )
        print("The response of SwapsApi->get_swap_quote:\n")
        pprint(api_response)
    except Exception as e:
        print("Exception when calling SwapsApi->get_swap_quote: %s\n" % e)

```

```java Java theme={null}
// Import classes:
import com.cobo.waas2.ApiClient;
import com.cobo.waas2.ApiException;
import com.cobo.waas2.Configuration;
import com.cobo.waas2.Env;
import com.cobo.waas2.api.SwapsApi;
import com.cobo.waas2.model.*;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    // Select the development environment. To use the production environment, replace `Env.DEV` with
    // `Env.PROD
    defaultClient.setEnv(Env.DEV);

    // Replace `<YOUR_PRIVATE_KEY>` with your private key
    defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
    SwapsApi apiInstance = new SwapsApi();
    UUID walletId = UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479");
    String payTokenId = "ETH";
    String receiveTokenId = "USDT";
    String payAmount = "1.5";
    String receiveAmount = "2000";
    try {
      SwapQuote result =
          apiInstance.getSwapQuote(walletId, payTokenId, receiveTokenId, payAmount, receiveAmount);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling SwapsApi#getSwapQuote");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

```

```go Go theme={null}
package main

import (
	"context"
	"fmt"
	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
	"os"
)

func main() {
	walletId := "f47ac10b-58cc-4372-a567-0e02b2c3d479"
	payTokenId := "ETH"
	receiveTokenId := "USDT"
	payAmount := "1.5"
	receiveAmount := "2000"

	configuration := coboWaas2.NewConfiguration()
	// Initialize the API client
	apiClient := coboWaas2.NewAPIClient(configuration)
	ctx := context.Background()

	// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
	// Replace `<YOUR_PRIVATE_KEY>` with your private key
	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
		Secret: "<YOUR_PRIVATE_KEY>",
	})
	resp, r, err := apiClient.SwapsAPI.GetSwapQuote(ctx).
		WalletId(walletId).
		PayTokenId(payTokenId).
		ReceiveTokenId(receiveTokenId).
		PayAmount(payAmount).
		ReceiveAmount(receiveAmount).
		Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `SwapsAPI.GetSwapQuote``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `GetSwapQuote`: SwapQuote
	fmt.Fprintf(os.Stdout, "Response from `SwapsAPI.GetSwapQuote`: %v\n", resp)
}

```

```javascript JavaScript theme={null}
const CoboWaas2 = require("@cobo/cobo-waas2");
// Initialize the API client
const apiClient = CoboWaas2.ApiClient.instance;
// Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
apiClient.setEnv(CoboWaas2.Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
// Call the API
const apiInstance = new CoboWaas2.SwapsApi();
const wallet_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
const pay_token_id = "ETH";
const receive_token_id = "USDT";
const opts = {
  pay_amount: "1.5",
  receive_amount: "2000",
};
apiInstance.getSwapQuote(wallet_id, pay_token_id, receive_token_id, opts).then(
  (data) => {
    console.log("API called successfully. Returned data: " + data);
  },
  (error) => {
    console.error(error);
  },
);

```

```python Python theme={null}
import cobo_waas2
from cobo_waas2.models.swap_quote import SwapQuote
from cobo_waas2.rest import ApiException
from pprint import pprint

# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
    # Replace `<YOUR_PRIVATE_KEY>` with your private key
    api_private_key="<YOUR_PRIVATE_KEY>",
    # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
    host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = cobo_waas2.SwapsApi(api_client)
    wallet_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
    pay_token_id = "ETH"
    receive_token_id = "USDT"
    pay_amount = "1.5"
    receive_amount = "2000"

    try:
        # Get swap quote
        api_response = api_instance.get_swap_quote(
            wallet_id,
            pay_token_id,
            receive_token_id,
            pay_amount=pay_amount,
            receive_amount=receive_amount,
        )
        print("The response of SwapsApi->get_swap_quote:\n")
        pprint(api_response)
    except Exception as e:
        print("Exception when calling SwapsApi->get_swap_quote: %s\n" % e)

```

```java Java theme={null}
// Import classes:
import com.cobo.waas2.ApiClient;
import com.cobo.waas2.ApiException;
import com.cobo.waas2.Configuration;
import com.cobo.waas2.Env;
import com.cobo.waas2.api.SwapsApi;
import com.cobo.waas2.model.*;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    // Select the development environment. To use the production environment, replace `Env.DEV` with
    // `Env.PROD
    defaultClient.setEnv(Env.DEV);

    // Replace `<YOUR_PRIVATE_KEY>` with your private key
    defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
    SwapsApi apiInstance = new SwapsApi();
    UUID walletId = UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479");
    String payTokenId = "ETH";
    String receiveTokenId = "USDT";
    String payAmount = "1.5";
    String receiveAmount = "2000";
    try {
      SwapQuote result =
          apiInstance.getSwapQuote(walletId, payTokenId, receiveTokenId, payAmount, receiveAmount);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling SwapsApi#getSwapQuote");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

```

```go Go theme={null}
package main

import (
	"context"
	"fmt"
	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
	"os"
)

func main() {
	walletId := "f47ac10b-58cc-4372-a567-0e02b2c3d479"
	payTokenId := "ETH"
	receiveTokenId := "USDT"
	payAmount := "1.5"
	receiveAmount := "2000"

	configuration := coboWaas2.NewConfiguration()
	// Initialize the API client
	apiClient := coboWaas2.NewAPIClient(configuration)
	ctx := context.Background()

	// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
	// Replace `<YOUR_PRIVATE_KEY>` with your private key
	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
		Secret: "<YOUR_PRIVATE_KEY>",
	})
	resp, r, err := apiClient.SwapsAPI.GetSwapQuote(ctx).
		WalletId(walletId).
		PayTokenId(payTokenId).
		ReceiveTokenId(receiveTokenId).
		PayAmount(payAmount).
		ReceiveAmount(receiveAmount).
		Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `SwapsAPI.GetSwapQuote``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `GetSwapQuote`: SwapQuote
	fmt.Fprintf(os.Stdout, "Response from `SwapsAPI.GetSwapQuote`: %v\n", resp)
}

```

```javascript JavaScript theme={null}
const CoboWaas2 = require("@cobo/cobo-waas2");
// Initialize the API client
const apiClient = CoboWaas2.ApiClient.instance;
// Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
apiClient.setEnv(CoboWaas2.Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
// Call the API
const apiInstance = new CoboWaas2.SwapsApi();
const wallet_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
const pay_token_id = "ETH";
const receive_token_id = "USDT";
const opts = {
  pay_amount: "1.5",
  receive_amount: "2000",
};
apiInstance.getSwapQuote(wallet_id, pay_token_id, receive_token_id, opts).then(
  (data) => {
    console.log("API called successfully. Returned data: " + data);
  },
  (error) => {
    console.error(error);
  },
);

```


## OpenAPI

````yaml get /swaps/quote
openapi: 3.0.3
info:
  title: Cobo Wallet as a Service 2.0
  description: >
    The Cobo Wallet-as-a-Service (WaaS) 2.0 API is the latest version of Cobo's
    WaaS API offering. It enables you to access Cobo's full suite of crypto
    wallet technologies with powerful and flexible access controls. By
    encapsulating complex security protocols and streamlining blockchain
    interactions, this API allows you to concentrate on your core business
    activities without worrying about the safety of your assets. The WaaS 2.0
    API presents the following key features:


    - A unified API for Cobo's [all wallet
    types](https://manuals.cobo.com/en/portal/introduction#an-all-in-one-wallet-platform)

    - Support for 80+ chains and 3000+ tokens

    - A comprehensive selection of webhook events

    - Flexible usage models for MPC Wallets, including [Organization-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ocw/introduction)
    and [User-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ucw/introduction)

    - Seamlessly transfer funds across multiple exchanges, including Binance,
    OKX, Bybit, Deribit, and more


    For more information about the WaaS 2.0 API, see [Introduction to WaaS
    2.0](https://www.cobo.com/developers/v2/guides/overview/introduction).
  termsOfService: https://cobo.com/waas/tos/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    name: Cobo WaaS
    url: https://www.cobo.com/waas
    email: help@cobo.com
  version: 1.0.0
servers:
  - url: https://api.dev.cobo.com/v2
    description: Development environment
  - url: https://api.cobo.com/v2
    description: Production environment
security:
  - CoboAuth: []
tags:
  - name: Organizations
    description: Operations related to Organizations.
  - name: Wallets
    description: Operations related to all wallets.
  - name: Wallets - MPC Wallets
    description: Operations related to mpc wallet.
  - name: Wallets - Exchange Wallet
    description: Operations related to exchange wallet.
  - name: Transactions
    description: Operations related to all transactions.
  - name: Developers - Webhooks
    description: Operations related to webhooks.
  - name: Stakings
    description: Operations related to staking.
  - name: OAuth
    description: Operations related to OAuth.
  - name: Developers
    description: Operations related to developers.
  - name: AddressBooks
    description: Operations related to address books.
  - name: TravelRule
    description: Operations related to travel rule.
  - name: GraphQL
    description: Operations related to executing GraphQL queries and mutations.
  - name: PrimeBroker
    description: Operations related to prime broker.
  - name: AppWorkflows
    description: Operations related to app workflow.
  - name: FeeStation
    description: Operations related to fee station.
  - name: Payment
    description: Operations related to payment.
  - name: Batch Payouts
    description: Operations related to batch payouts.
  - name: Tokenization
    description: Operations related to tokenization.
  - name: AutoSweep
    description: Operations related to auto sweep.
  - name: Compliance
    description: Operations related to compliance.
  - name: Reconciliation
    description: Operations related to reconciliation.
  - name: Internal - FeeEngine
    description: Internal operations related to fee engine .
  - name: Internal - Tokens
    description: Internal operations related to tokens.
  - name: Internal - Package
    description: Internal operations related to package management.
paths:
  /swaps/quote:
    get:
      tags:
        - Swaps
      summary: Get swap quote
      description: >
        This operation retrieves the current market exchange rate and estimated
        service fee. You need to provide `wallet_id`, `pay_token_id`, and
        `receive_token_id`, along with either `pay_amount` or `receive_amount`.
      operationId: get_swap_quote
      parameters:
        - $ref: '#/components/parameters/requiredWalletIdParam'
        - $ref: '#/components/parameters/payTokenIdRequiredParam'
        - $ref: '#/components/parameters/receiveTokenIdRequiredParam'
        - $ref: '#/components/parameters/payAmountOptionalParam'
        - $ref: '#/components/parameters/receiveAmountOptionalParam'
      responses:
        '200':
          $ref: '#/components/responses/getSwapQuoteResponse'
        4XX:
          $ref: '#/components/responses/badRequestError'
        5XX:
          $ref: '#/components/responses/internalServerError'
components:
  parameters:
    requiredWalletIdParam:
      name: wallet_id
      in: query
      required: true
      description: The wallet ID.
      schema:
        type: string
        format: uuid
      example: f47ac10b-58cc-4372-a567-0e02b2c3d479
    payTokenIdRequiredParam:
      name: pay_token_id
      in: query
      required: true
      schema:
        type: string
      description: The ID of the token to pay.
      example: ETH
    receiveTokenIdRequiredParam:
      name: receive_token_id
      in: query
      required: true
      schema:
        type: string
      description: The ID of the token to receive.
      example: USDT
    payAmountOptionalParam:
      name: pay_amount
      in: query
      required: false
      schema:
        type: string
      description: The amount of the token to pay.
      example: '1.5'
    receiveAmountOptionalParam:
      name: receive_amount
      in: query
      required: false
      schema:
        type: string
      description: The amount of the token to receive.
      example: '2000'
  responses:
    getSwapQuoteResponse:
      description: The swap quote successfully retrieved.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SwapQuote'
    badRequestError:
      description: >-
        Bad request. Your request contains malformed syntax or invalid
        parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    internalServerError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    SwapQuote:
      type: object
      required:
        - quote_id
        - pay_token_id
        - pay_amount
        - receive_token_id
        - receive_amount
        - fee_token_id
        - fee_amount
        - quote_expired_timestamp
      properties:
        quote_id:
          type: string
          description: The unique id of quote.
          example: 2ec094034044ffa50f4294d48363fef31eb5755fc783ba3837a03c91b4904659
        pay_token_id:
          type: string
          description: The token ID to pay.
          example: BTC
        pay_amount:
          type: string
          description: The amount of tokens to pay.
          example: '100'
        receive_token_id:
          type: string
          description: The token ID to receive.
          example: ETH_WBTC
        receive_amount:
          type: string
          description: The amount of tokens to receive.
          example: '100'
        fee_token_id:
          type: string
          description: The token ID for the service fee.
          example: BTC
        fee_amount:
          type: string
          description: The amount of tokens for the service fee.
          example: '0.3'
        min_receive_amount:
          type: string
          description: >-
            The minimum amount of tokens to receive if the pay amount is
            specified.
          example: '0'
        max_pay_amount:
          type: string
          description: >-
            The maximum amount of tokens to pay if the receive amount is
            specified.
          example: '10000'
        quote_expired_timestamp:
          type: integer
          format: int64
          description: >-
            The time when the quote will expire, in Unix timestamp format,
            measured in milliseconds.
          example: 1677587393000
    ErrorResponse:
      type: object
      description: The response of a failed request.
      required:
        - error_code
        - error_message
        - error_id
      properties:
        error_code:
          type: integer
          description: >-
            The error code. Refer to [Error codes and status
            codes](https://www.cobo.com/developers/v2/api-references/error-codes)
            for more details.
        error_message:
          type: string
          description: The error description.
        error_id:
          type: string
          description: >-
            The error log ID. You can provide the error ID when submitting a
            ticket to help Cobo to locate the issue.
          example: 0b6ddf19083c4bd1a9ca01bec44b24dd
  securitySchemes:
    CoboAuth:
      type: apiKey
      in: header
      name: BIZ-API-KEY
      description: >
        The API key. For more details, refer to [API
        key](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-key).


        In the API playground, enter your [API
        secret](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-secret),
        and your API key will be accordingly calculated.

````