Skip to main content
POST
/
transactions
/
message_sign
import cobo_waas2
from cobo_waas2.models.create_transfer_transaction201_response import (
    CreateTransferTransaction201Response,
)
from cobo_waas2.models.message_sign_params import MessageSignParams
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.TransactionsApi(api_client)
    message_sign_params = cobo_waas2.MessageSignParams(
        request_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
        chain_id="ETH",
        source=cobo_waas2.MessageSignSource(
            cobo_waas2.MpcMessageSignSource(
                source_type="Org-Controlled",
                wallet_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
                address="19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
            )
        ),
        destination=cobo_waas2.MessageSignDestination(
            cobo_waas2.EvmEIP191MessageSignDestination(
                destination_type="EVM_EIP_191_Signature", message="YWFhYQ=="
            )
        ),
    )

    try:
        # Sign message
        api_response = api_instance.create_message_sign_transaction(
            message_sign_params=message_sign_params
        )
        print("The response of TransactionsApi->create_message_sign_transaction:\n")
        pprint(api_response)
    except Exception as e:
        print(
            "Exception when calling TransactionsApi->create_message_sign_transaction: %s\n"
            % e
        )

// 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.TransactionsApi;
import com.cobo.waas2.model.*;
import java.util.UUID;

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>");
    TransactionsApi apiInstance = new TransactionsApi();
    MessageSignParams messageSignParams =
        new MessageSignParams()
            .requestId("f47ac10b-58cc-4372-a567-0e02b2c3d479")
            .chainId("ETH")
            .source(
                new MessageSignSource(
                    new MpcMessageSignSource()
                        .sourceType(MessageSignSourceType.ORG_CONTROLLED)
                        .walletId(UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479"))
                        .address("19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")))
            .destination(
                new MessageSignDestination(
                    new EvmEIP191MessageSignDestination()
                        .destinationType(MessageSignDestinationType.EVM_EIP_191_SIGNATURE)
                        .message("YWFhYQ==")));
    try {
      CreateTransferTransaction201Response result =
          apiInstance.createMessageSignTransaction(messageSignParams);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling TransactionsApi#createMessageSignTransaction");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

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() {
	messageSignParams := *coboWaas2.NewMessageSignParams("f47ac10b-58cc-4372-a567-0e02b2c3d479", "ETH", coboWaas2.MessageSignSource{CustodialWeb3MessageSignSource: coboWaas2.NewCustodialWeb3MessageSignSource(coboWaas2.MessageSignSourceType("Web3"), "f47ac10b-58cc-4372-a567-0e02b2c3d479", "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")}, coboWaas2.MessageSignDestination{BTCBIP137MessageSignDestination: coboWaas2.NewBTCBIP137MessageSignDestination(coboWaas2.MessageSignDestinationType("EVM_EIP_191_Signature"), "MessageBip137_example")})

	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.TransactionsAPI.CreateMessageSignTransaction(ctx).
		MessageSignParams(messageSignParams).
		Execute()
	if err != nil {
		fmt.Fprintf(
			os.Stderr,
			"Error when calling `TransactionsAPI.CreateMessageSignTransaction``: %v\n",
			err,
		)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `CreateMessageSignTransaction`: CreateTransferTransaction201Response
	fmt.Fprintf(
		os.Stdout,
		"Response from `TransactionsAPI.CreateMessageSignTransaction`: %v\n",
		resp,
	)
}

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.TransactionsApi();
const opts = {
  MessageSignParams: CoboWaas2.MessageSignParams.constructFromObject({
    request_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    chain_id: "ETH",
    source: {
      source_type: "Org-Controlled",
      wallet_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      address: "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
    },
    destination: {
      destination_type: "EVM_EIP_191_Signature",
      message: "YWFhYQ==",
    },
  }),
};
apiInstance.createMessageSignTransaction(opts).then(
  (data) => {
    console.log("API called successfully. Returned data: " + data);
  },
  (error) => {
    console.error(error);
  },
);

{
  "request_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "transaction_id": "c986cb3b-1301-412f-9450-13a52c43a95f",
  "status": "Submitted"
}
{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}
{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}
Try Cobo WaaS Skill 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 🚀
import cobo_waas2
from cobo_waas2.models.create_transfer_transaction201_response import (
    CreateTransferTransaction201Response,
)
from cobo_waas2.models.message_sign_params import MessageSignParams
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.TransactionsApi(api_client)
    message_sign_params = cobo_waas2.MessageSignParams(
        request_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
        chain_id="ETH",
        source=cobo_waas2.MessageSignSource(
            cobo_waas2.MpcMessageSignSource(
                source_type="Org-Controlled",
                wallet_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
                address="19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
            )
        ),
        destination=cobo_waas2.MessageSignDestination(
            cobo_waas2.EvmEIP191MessageSignDestination(
                destination_type="EVM_EIP_191_Signature", message="YWFhYQ=="
            )
        ),
    )

    try:
        # Sign message
        api_response = api_instance.create_message_sign_transaction(
            message_sign_params=message_sign_params
        )
        print("The response of TransactionsApi->create_message_sign_transaction:\n")
        pprint(api_response)
    except Exception as e:
        print(
            "Exception when calling TransactionsApi->create_message_sign_transaction: %s\n"
            % e
        )

// 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.TransactionsApi;
import com.cobo.waas2.model.*;
import java.util.UUID;

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>");
    TransactionsApi apiInstance = new TransactionsApi();
    MessageSignParams messageSignParams =
        new MessageSignParams()
            .requestId("f47ac10b-58cc-4372-a567-0e02b2c3d479")
            .chainId("ETH")
            .source(
                new MessageSignSource(
                    new MpcMessageSignSource()
                        .sourceType(MessageSignSourceType.ORG_CONTROLLED)
                        .walletId(UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479"))
                        .address("19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")))
            .destination(
                new MessageSignDestination(
                    new EvmEIP191MessageSignDestination()
                        .destinationType(MessageSignDestinationType.EVM_EIP_191_SIGNATURE)
                        .message("YWFhYQ==")));
    try {
      CreateTransferTransaction201Response result =
          apiInstance.createMessageSignTransaction(messageSignParams);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling TransactionsApi#createMessageSignTransaction");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

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() {
	messageSignParams := *coboWaas2.NewMessageSignParams("f47ac10b-58cc-4372-a567-0e02b2c3d479", "ETH", coboWaas2.MessageSignSource{CustodialWeb3MessageSignSource: coboWaas2.NewCustodialWeb3MessageSignSource(coboWaas2.MessageSignSourceType("Web3"), "f47ac10b-58cc-4372-a567-0e02b2c3d479", "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")}, coboWaas2.MessageSignDestination{BTCBIP137MessageSignDestination: coboWaas2.NewBTCBIP137MessageSignDestination(coboWaas2.MessageSignDestinationType("EVM_EIP_191_Signature"), "MessageBip137_example")})

	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.TransactionsAPI.CreateMessageSignTransaction(ctx).
		MessageSignParams(messageSignParams).
		Execute()
	if err != nil {
		fmt.Fprintf(
			os.Stderr,
			"Error when calling `TransactionsAPI.CreateMessageSignTransaction``: %v\n",
			err,
		)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `CreateMessageSignTransaction`: CreateTransferTransaction201Response
	fmt.Fprintf(
		os.Stdout,
		"Response from `TransactionsAPI.CreateMessageSignTransaction`: %v\n",
		resp,
	)
}

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.TransactionsApi();
const opts = {
  MessageSignParams: CoboWaas2.MessageSignParams.constructFromObject({
    request_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    chain_id: "ETH",
    source: {
      source_type: "Org-Controlled",
      wallet_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      address: "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
    },
    destination: {
      destination_type: "EVM_EIP_191_Signature",
      message: "YWFhYQ==",
    },
  }),
};
apiInstance.createMessageSignTransaction(opts).then(
  (data) => {
    console.log("API called successfully. Returned data: " + data);
  },
  (error) => {
    console.error(error);
  },
);

Authorizations

BIZ-API-KEY
string
header
required

The API key. For more details, refer to API key.

In the API playground, enter your API secret, and your API key will be accordingly calculated.

Body

application/json

The request body to create a message signing transaction

The information about a transaction that signs a message. You can provide the message either as raw data or as structured data.

request_id
string
required

The request ID that is used to track a transaction request. The request ID is provided by you and must be unique within your organization.

Example:

"f47ac10b-58cc-4372-a567-0e02b2c3d479"

chain_id
string
required

The chain ID, which is the unique identifier of a blockchain. You can retrieve the IDs of all the chains you can use by calling List enabled chains.

Example:

"ETH"

source
Org-Controlled/User-Controlled · object
required
destination
EVM_EIP_191_Signature · object
required

The information about the destination EVM_EIP_191_Signature. Refer to Transaction sources and destinations for a detailed introduction about the supported sources and destinations for each transaction type.

description
string

The description of the message signing transaction.

Example:

"Transaction to sign a message initiated from a wallet"

category_names
string[]

The custom category for you to identify your transactions.

Response

The request was successful.

request_id
string
required

The request ID that is used to track a transaction request. The request ID is provided by you and must be unique within your organization.

Example:

"f47ac10b-58cc-4372-a567-0e02b2c3d479"

transaction_id
string
required

The transaction ID.

Example:

"c986cb3b-1301-412f-9450-13a52c43a95f"

status
enum<string>
required

The transaction status. For more details including sub-statuses, please refer to Transaction statuses and sub-statuses.

The PendingAuthorization status covers both manual approval steps and internal automated risk-control, KYT, and compliance screening checks. A transaction in this status does not necessarily require a human to take action.

Available options:
Submitted,
PendingScreening,
PendingAuthorization,
PendingSignature,
Broadcasting,
Confirming,
Completed,
Failed,
Rejected,
Pending
Example:

"Submitted"