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

# Send Transaction

POST https://api.syndicate.io/transact/sendTransaction
Content-Type: application/json

Send transaction to blockchain

Reference: https://tc.docs.syndicate.io/api/transactions/send-transaction

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Body (application/json)

This endpoint expects a SendTransactionRequest.

- `projectId` (UUID, required) — ID of the project you want this request to be sent from
- `contractAddress` (string, required) — The contract address to send request to
- `chainId` (long, required) — The chain ID for the network (e.g. 1 for Ethereum Mainnet, 137 for Polygon Mainnet, 80001 for Polygon Mumbai). For a complete list of chain IDs, see [ChainList](https://chainlist.org/?search=&testnets=true).
- `functionSignature` (string, required) — The human readable signature to call on the contract
- `requestId` (UUID, optional) — (Optional) ID of the request. Needs to be a valid UUID. If provided, it will be saved and returned as the transactionId of the response. If not provided, we will generate one for you and return it as the transactionId.
- `args` (map from string to any, optional) — (Optional) The function arguments for the transaction if any. The keys are the argument names or index from the provided function signature and the values are the argument values.

## Response

### 200

- `transactionId` (UUID, required)

## Errors

### 409 Duplicate Transaction Error

- `message` (string, required)

### 400 Bad Request Error

- `message` (string, required)

### 500 Internal Error

### 422 Invalid Request ID Error

- `message` (string, required)

## Examples

**Request**

```json
{
  "projectId": "638d1d78-d63d-4cda-9f1e-4d0799acfeee",
  "contractAddress": "0x94f6E9c420Db1566A3c035Df291F206eBfAfC762",
  "chainId": 80001,
  "functionSignature": "addPerson((string name, uint16 age) person))",
  "requestId": "083be671-9f3f-41c0-9377-8c33aab3b413",
  "args": {
    "person": {
      "name": "Person",
      "age": 55
    }
  }
}
```

**Response**

```json
{
  "transactionId": "561b77ed-6e35-4248-87ef-c6af93f3bad9"
}
```

**SDK Code**

```typescript
import { SyndicateClient } from "@syndicateio/syndicate-node";

const client = new SyndicateClient({ token: "YOUR_TOKEN" });
await client.transact.sendTransaction({
    requestId: "083be671-9f3f-41c0-9377-8c33aab3b413",
    projectId: "638d1d78-d63d-4cda-9f1e-4d0799acfeee",
    contractAddress: "0x94f6E9c420Db1566A3c035Df291F206eBfAfC762",
    chainId: 80001,
    functionSignature: "addPerson((string name, uint16 age) person))",
    args: {
        "person": {
            "name": "Person",
            "age": 55
        }
    }
});

```

```python
import requests

url = "https://api.syndicate.io/transact/sendTransaction"

payload = {
    "projectId": "638d1d78-d63d-4cda-9f1e-4d0799acfeee",
    "contractAddress": "0x94f6E9c420Db1566A3c035Df291F206eBfAfC762",
    "chainId": 80001,
    "functionSignature": "addPerson((string name, uint16 age) person))",
    "requestId": "083be671-9f3f-41c0-9377-8c33aab3b413",
    "args": { "person": {
            "name": "Person",
            "age": 55
        } }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.syndicate.io/transact/sendTransaction"

	payload := strings.NewReader("{\n  \"projectId\": \"638d1d78-d63d-4cda-9f1e-4d0799acfeee\",\n  \"contractAddress\": \"0x94f6E9c420Db1566A3c035Df291F206eBfAfC762\",\n  \"chainId\": 80001,\n  \"functionSignature\": \"addPerson((string name, uint16 age) person))\",\n  \"requestId\": \"083be671-9f3f-41c0-9377-8c33aab3b413\",\n  \"args\": {\n    \"person\": {\n      \"name\": \"Person\",\n      \"age\": 55\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.syndicate.io/transact/sendTransaction")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"projectId\": \"638d1d78-d63d-4cda-9f1e-4d0799acfeee\",\n  \"contractAddress\": \"0x94f6E9c420Db1566A3c035Df291F206eBfAfC762\",\n  \"chainId\": 80001,\n  \"functionSignature\": \"addPerson((string name, uint16 age) person))\",\n  \"requestId\": \"083be671-9f3f-41c0-9377-8c33aab3b413\",\n  \"args\": {\n    \"person\": {\n      \"name\": \"Person\",\n      \"age\": 55\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.syndicate.io/transact/sendTransaction")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"projectId\": \"638d1d78-d63d-4cda-9f1e-4d0799acfeee\",\n  \"contractAddress\": \"0x94f6E9c420Db1566A3c035Df291F206eBfAfC762\",\n  \"chainId\": 80001,\n  \"functionSignature\": \"addPerson((string name, uint16 age) person))\",\n  \"requestId\": \"083be671-9f3f-41c0-9377-8c33aab3b413\",\n  \"args\": {\n    \"person\": {\n      \"name\": \"Person\",\n      \"age\": 55\n    }\n  }\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.syndicate.io/transact/sendTransaction', [
  'body' => '{
  "projectId": "638d1d78-d63d-4cda-9f1e-4d0799acfeee",
  "contractAddress": "0x94f6E9c420Db1566A3c035Df291F206eBfAfC762",
  "chainId": 80001,
  "functionSignature": "addPerson((string name, uint16 age) person))",
  "requestId": "083be671-9f3f-41c0-9377-8c33aab3b413",
  "args": {
    "person": {
      "name": "Person",
      "age": 55
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.syndicate.io/transact/sendTransaction");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"projectId\": \"638d1d78-d63d-4cda-9f1e-4d0799acfeee\",\n  \"contractAddress\": \"0x94f6E9c420Db1566A3c035Df291F206eBfAfC762\",\n  \"chainId\": 80001,\n  \"functionSignature\": \"addPerson((string name, uint16 age) person))\",\n  \"requestId\": \"083be671-9f3f-41c0-9377-8c33aab3b413\",\n  \"args\": {\n    \"person\": {\n      \"name\": \"Person\",\n      \"age\": 55\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "projectId": "638d1d78-d63d-4cda-9f1e-4d0799acfeee",
  "contractAddress": "0x94f6E9c420Db1566A3c035Df291F206eBfAfC762",
  "chainId": 80001,
  "functionSignature": "addPerson((string name, uint16 age) person))",
  "requestId": "083be671-9f3f-41c0-9377-8c33aab3b413",
  "args": ["person": [
      "name": "Person",
      "age": 55
    ]]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.syndicate.io/transact/sendTransaction")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```