Skip to main content

AI Wars: Participant Guide

Welcome to the Arena: The Path to Alpha Awakening

AI Wars: WEEX Alpha Awakens – Global AI Trading Hackathon!

In this ultimate showdown, top developers, quants, and traders from around the world will unleash their algorithms in real-market battles, competing for one of the richest prize pools in AI crypto trading history: 880,000 USD, including a Bentley Bentayga S for the champion.

This guide will walk you through every required step from registration to the official start of the competition.

Follow the path and start your journey:

Register & Form Your Team → Pass API Testing → Model Tuning → Official Start

Step 1|Register, Create & Submit Your BUIDL, and Obtain Your API Key

Check the registration tutorial: https://www.youtube.com/watch?v=yeJaQRN9spA

Goal: Complete your official registration, create or join a team (BUIDL), and pass the review to receive your dedicated API key.

Outcome: You will obtain exclusive API credentials to connect your system to WEEX — marking your first step into the competition.

1.1 Visit the AI Wars: WEEX Alpha Awakens Event Page

  1. Visit the event page: https://www.weex.com/events/ai-trading
  2. Find the "Submit BUIDL" button and click

img.png

1.2 Find a Team or Build Your Own

A BUIDL is the basic participating unit of this competition and represents a team.

Existing BUIDLs represent teams that have already been created. You may join one of these BUIDLs or create your own team from scratch.

img.png

If you choose to submit your own BUIDL, information should include:

  • Profile: BUIDL name, logo, vision, category, GitHub (optional), and social links
  • Details: A brief introduction to your BUIDL
  • Team: Team information. You can also invite or recruit team members to this section.
  • Contact: Telegram handle and backup contact details
  • Submission:
    • WEEX UID (KYC required)
    • IP Address (this IP will be added to the WEEX OpenAPI whitelist to enable successful API calls)
    • Preferred programming languages
    • Experience with Large Language Models (LLMs), AI-assisted trading, automated trading bots, or other exchanges’ APIs
    • Number of orders your strategy will place per day
tip

Solo participation is allowed, but we recommend a 2–5 member cross-functional team (developer + quant researcher + trader).

1: How to Complete KYC and Find Your WEEX UID

To register for the WEEX Global AI Trading Hackathon, you’ll need to provide your KYC-verified WEEX UID. Here’s how to find it:

  1. Register Your Account

    Click the link to visit the WEEX official website. Select “Sign Up” in the top right, then register using your email or phone number.

    Note: If you already have an account, click “Log In” in the top-right corner to access your dashboard.

img.png

  1. Complete Identity Verification

    Click the avatar icon in the top right and select “Verification” to complete your KYC.

    Note: KYC is mandatory — submissions without KYC cannot be approved.

img.png

  1. Find Your UID

    Click the avatar icon again, and you will see your UID displayed right below your email.

img_1.png

Submission Mini Tip 2: How to Find Your IP Address

Part 1: The Recommended Method (Cloud Servers)

For best stability, we strongly recommend using a cloud server with static public IP and supporting 24/7 uninterrupted operation such as: AWS (Amazon Web Services), Alibaba Cloud, and Tencent Cloud.

Part 2: The Alternative Method (Local Computer)

If you choose to run your trading bot from a personal computer or home network, you must confirm that your outbound IP address is static. A changing IP will result in connectivity issues.

You have two main options to ensure a stable outbound IP:

  1. Use a static IP provided by your Internet Service Provider (ISP).
  2. Use a VPN or Proxy service with a fixed egress IP (and ensure the VPN/Proxy is consistently enabled without switching servers).

Steps to find your local public IP:

  • Turn off all VPNs, or keep only the single VPN whose IP you plan to whitelist.
  • Visit whatismyip.com in your browser.
  • The page will show your public IPv4 address.
  • Copy this IP and submit it to the whitelist.
warning

Note: Most home broadband IPv4 addresses are dynamic and may change periodically. It is highly recommended to use a cloud server environment to avoid connection failures during the competition.

1.3 Missing Information? We Will Follow Up

After you submit your BUIDL, the WEEX team will review your application based on the competition requirements. The review process normally takes one business day.

If any information is missing or requires clarification, our team will reach out to you through one of the following channels:

  • DoraHacks messaging system
  • WEEX official messaging system
  • Your registered contact information (Telegram, X, etc.)

Please keep your contact details active and accessible.

Once your BUIDL is approved, you will receive your competition account and exclusive API Key, which will allow you to move on to the next stage: API testing and model integration.

img_2.pngimg_3.png
Under ReviewApproved

1.4 Your Starter Kit

After your BUIDL passes the review, WEEX will create a dedicated competition account for you and provide the API credentials and testing information required for the next stage. These details will be sent to you via the DoraHacks message system and WEEX Labs official emails.

You will receive:

  • API Key: The identifier for your competition account and a required parameter for all API requests.
  • Secret Key: System-generated key used for request signing and security verification.
  • Passphrase: Required to perform API operations.
  • API Testing Page Link: A mini testing environment where you can view the API testing requirements, specifications, and completion criteria.

With this, your registration is complete and you’re ready for API testing.

Step 2|Pass the Gateway: Complete Your API Testing

Goal: Ensure that your system can successfully interact with the WEEX API and execute the required test trades.

Outcome: You’ll secure official entry qualification, receive initial test funds for debugging, and gain a clear understanding of all pre-competition requirements.

2.1 Instructions

  • Please complete all required operations listed on the API Testing page.
  • Participants who complete and pass the API testing will officially obtain eligibility for the competition.
  • Participants who fail to complete or pass API testing will be unable to proceed to the model integration and formal competition stages.

After receiving the above information, please keep your API credentials secure and follow the instructions to access the API Testing page and complete the required tests.

img_4.png

2.2 Connect and Test

Participants need to complete a simple API test to qualify for the preliminary round of the hackathon. Please read the WEEX official API documentation carefully, and use the API key we provide to complete the test.

tip

API-testing: Use the API to call the order placement endpoint and execute a trade for approximately 10 USDT on cmt_btcusdt.

Integration Preparation

  1. Please read the official WEEX API documentation carefully: https://www.weex.com/api-doc/ai/intro

  2. Connect to a cloud server and run the code below. You should receive a response that confirms whether your network connection is working properly.

curl -s --max-time 10 "https://api-contract.weex.com/capi/v2/market/time"
{"epoch":"1765423487.896","iso":"2025-12-11T03:24:47.896Z","timestamp":1765423487896}
  1. If your project is developed in Java or Python, you can directly use the corresponding code examples provided in the documentation. For other programming languages, please adapt the examples according to the official API documentation to suit your implementation. Sample code documentation: https://www.weex.com/api-doc/ai/QuickStart/RequestInteraction

  2. The platform provides two types of APIs:

    • Public APIs: Used to access configuration details, market data, and other public information. No authentication is required.
    • Private APIs: Used for order management, account operations, and other sensitive actions. Authentication is mandatory.

When calling private APIs, please include the following authentication details in your HTTP request headers:

Request Header FieldsInformation
ACCESS-KEYA unique identifier for the user account
ACCESS-PASSPHRASEThe password associated with the API Key
ACCESS-TIMESTAMPA Unix Epoch timestamp in milliseconds. The timestamp is valid for 30 seconds and must match the one used in the signature calculation.
ACCESS-SIGNThe request signature string. You may use the signature generation method provided in the sample code. For the underlying algorithm, refer to the signature documentation: https://www.weex.com/api-doc/ai/QuickStart/Signature
Content-TypeContent fixed as application/json.
localeLanguage identifier (e.g.,zh-CN,en-US)

Fill in "https://api-contract.weex.com" for BASE_URL

HTTP status codes:

  • 200 Success – Successful response
  • 400 Bad Request – Invalid request format
  • 403 Forbidden – You do not have access to the requested resource
  • 404 Not Found – Request not found
  • 429 Too Many Requests – Request too frequent, please try again later
  • 500 Internal Server Error – We had a problem with our server
  • 521 Web Server is Down – IP not whitelisted

Other error codes:https://www.weex.com/api-doc/contract/ErrorCodes/ExampleOfErrorCode

You can start API testing once the above steps are completed. The following instructions use BTC as the example asset.

Check Account Balance

  1. Use Account Balance API to request your current account balance

Sample code:


import time
import hmac
import hashlib
import base64
import requests

api_key = ""
secret_key = ""
access_passphrase = ""

def generate_signature_get(secret_key, timestamp, method, request_path, query_string):
message = timestamp + method.upper() + request_path + query_string
signature = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).digest()
return base64.b64encode(signature).decode()

def send_request_get(api_key, secret_key, access_passphrase, method, request_path, query_string):
timestamp = str(int(time.time() * 1000))
signature = generate_signature_get(secret_key, timestamp, method, request_path, query_string)
headers = {
"ACCESS-KEY": api_key,
"ACCESS-SIGN": signature,
"ACCESS-TIMESTAMP": timestamp,
"ACCESS-PASSPHRASE": access_passphrase,
"Content-Type": "application/json",
"locale": "en-US"
}

url = "https://api-contract.weex.com/" # Please replace with the actual API address
if method == "GET":
response = requests.get(url + request_path+query_string, headers=headers)
return response

def assets():
request_path = "/capi/v2/account/assets"
query_string = ""
response = send_request_get(api_key, secret_key, access_passphrase, "GET", request_path, query_string)
print(response.status_code)
print(response.text)

if __name__ == '__main__':
assets()
  1. Check the response

The example below indicates a successful response

[
{
"coinName": "USDT",
"available": "5413.06877369",
"equity": "5696.49288823",
"frozen": "81.28240000",
"unrealizePnl": "-34.55300000"
}
]

If the request fails, refer to the detailed error codes here, or contact technical support in the TG group.

Get Asset Price

1.Use Price Ticker API to request the latest price of cmt_btcusdt

Sample code:

import requests

def send_request_get( method, request_path, query_string):
url = "https://api-contract.weex.com/" # Please replace with the actual API address
if method == "GET":
response = requests.get(url + request_path+query_string)
return response

def ticker():
request_path = "/capi/v2/market/ticker"
query_string = "?symbol=cmt_btcusdt"
response = send_request_get( "GET", request_path, query_string)
print(response.status_code)
print(response.text)

if __name__ == '__main__':
ticker()
  1. Check the response

The example below indicates a successful response

{
"symbol": "cmt_btcusdt",
"last": "90755.3",
"best_ask": "90755.4",
"best_bid": "90755.3",
"high_24h": "91130.0",
"low_24h": "90097.3",
"volume_24h": "2321170547.37995",
"timestamp": "1764482511864",
"priceChangePercent": "0.000474",
"base_volume": "25615.0755",
"markPrice": "90755.2",
"indexPrice": "90797.161"
}

If the request fails, refer to the detailed error codes here, or contact technical support in the TG group.

Set Leverage

Note: The maximum leverage allowed in this competition is 20x; please follow the rules on WEEX official website.

  1. Use the Leverage Adjustment API to modify the cross-margin leverage for cmt_btcusdt

Sample code:

import time
import hmac
import hashlib
import base64
import requests
import json

api_key = ""
secret_key = ""
access_passphrase = ""

def generate_signature(secret_key, timestamp, method, request_path, query_string, body):
message = timestamp + method.upper() + request_path + query_string + str(body)
signature = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).digest()
return base64.b64encode(signature).decode()

def send_request_post(api_key, secret_key, access_passphrase, method, request_path, query_string, body):
timestamp = str(int(time.time() * 1000))
body = json.dumps(body)
signature = generate_signature(secret_key, timestamp, method, request_path, query_string, body)
headers = {
"ACCESS-KEY": api_key,
"ACCESS-SIGN": signature,
"ACCESS-TIMESTAMP": timestamp,
"ACCESS-PASSPHRASE": access_passphrase,
"Content-Type": "application/json",
"locale": "en-US"
}
url = "https://api-contract.weex.com/" # Please replace with the actual API address
if method == "POST":
response = requests.post(url + request_path, headers=headers, data=body)
return response

def leverage():
request_path = "/capi/v2/account/leverage"
body = {"symbol":"cmt_btcusdt","marginMode":1,"longLeverage":"1","shortLeverage":"1"}
query_string = ""
response = send_request_post(api_key, secret_key, access_passphrase, "POST", request_path, query_string, body)
print(response.status_code)
print(response.text)

if __name__ == '__main__':
leverage()

You may set other leverage values (up to 20×) in the same way—simply replace the leverage numbers accordingly. The leverage values are followed by the trading pairs.

2.Check the response

The example below indicates a successful response

{
"msg": "success",
"requestTime": 1713339011237,
"code": "200"
}

If the request fails, refer to the detailed error codes here, or contact technical support in the TG group.

Place order

Note: Only the following trading pairs are allowed in this competition: cmt_btcusdt, cmt_ethusdt, cmt_solusdt, cmt_dogeusdt, cmt_xrpusdt, cmt_adausdt, cmt_bnbusdt, cmt_ltcusdt

The maximum leverage is 20x; please follow the rules on WEEX official website.

1.Use Get Futures Information to retrieve contract information for cmt_btcusdt (order precision, price precision, max/min order size, etc.)

Sample code:

import requests

def send_request_get( method, request_path, query_string):
url = "https://api-contract.weex.com/" # Please replace with the actual API address
if method == "GET":
response = requests.get(url + request_path+query_string)
return response

def contracts():
request_path = "/capi/v2/market/contracts"
query_string = "?symbol=cmt_btcusdt"
response = send_request_get( "GET", request_path, query_string)
print(response.status_code)
print(response.text)

if __name__ == '__main__':
contracts()

2.Check the response

The example below indicates a successful response

[
{
"symbol": "cmt_btcusdt",
"underlying_index": "BTC",
"quote_currency": "USDT",
"coin": "USDT",
"contract_val": "0.0001",
"delivery": [
"00:00:00",
"08:00:00",
"16:00:00"
],
"size_increment": "4",
"tick_size": "1",
"forwardContractFlag": true,
"priceEndStep": 1,
"minLeverage": 1,
"maxLeverage": 400,
"buyLimitPriceRatio": "0.01",
"sellLimitPriceRatio": "0.01",
"makerFeeRate": "0.0002",
"takerFeeRate": "0.0008",
"minOrderSize": "0.0001",
"maxOrderSize": "1200",
"maxPositionSize": "1000000",
"marketOpenLimitSize": "100"
}
]

If the request fails, refer to the detailed error codes here, or contact technical support in the TG group.

Note: The API response may show a higher maximum leverage (for example, 400x) available on the platform. However, for this competition, the maximum leverage you are allowed to use is strictly limited to 20x.

  1. Use Place Order API to open a long position for cmt_btcusdt with a limit price of 100000.0 and 0.0001 BTC, using the contract information from Step 1 (order precision, price precision, and max/min order size) to construct the parameters.

Sample code:

import time
import hmac
import hashlib
import base64
import requests
import json

api_key = ""
secret_key = ""
access_passphrase = ""

def generate_signature(secret_key, timestamp, method, request_path, query_string, body):
message = timestamp + method.upper() + request_path + query_string + str(body)
signature = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).digest()
return base64.b64encode(signature).decode()

def send_request_post(api_key, secret_key, access_passphrase, method, request_path, query_string, body):
timestamp = str(int(time.time() * 1000))
body = json.dumps(body)
signature = generate_signature(secret_key, timestamp, method, request_path, query_string, body)
headers = {
"ACCESS-KEY": api_key,
"ACCESS-SIGN": signature,
"ACCESS-TIMESTAMP": timestamp,
"ACCESS-PASSPHRASE": access_passphrase,
"Content-Type": "application/json",
"locale": "en-US"
}
url = "https://api-contract.weex.com/" # Please replace with the actual API address
if method == "POST":
response = requests.post(url + request_path, headers=headers, data=body)
return response

def placeOrder():
request_path = "/capi/v2/order/placeOrder"
body = {
"symbol": "cmt_btcusdt",
"client_oid": "test",
"size": "0.0001",
"type": "1",
"order_type": "0",
"match_price": "0",
"price": "100000.0"}
query_string = ""
response = send_request_post(api_key, secret_key, access_passphrase, "POST", request_path, query_string, body)
print(response.status_code)
print(response.text)

if __name__ == '__main__':
placeOrder()
  1. Check the response

The example below indicates a successful response

{
"client_oid": null,
"order_id": "596471064624628269"
}

If the request fails, refer to the detailed error codes here, or contact technical support in the TG group.

Get Trade Details for Completed Orders

1.Use Trade Details API to retrieve your trade history.

Sample code:

import time
import hmac
import hashlib
import base64
import requests

api_key = ""
secret_key = ""
access_passphrase = ""

def generate_signature_get(secret_key, timestamp, method, request_path, query_string):
message = timestamp + method.upper() + request_path + query_string
signature = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).digest()
return base64.b64encode(signature).decode()

def send_request_get(api_key, secret_key, access_passphrase, method, request_path, query_string):
timestamp = str(int(time.time() * 1000))
signature = generate_signature_get(secret_key, timestamp, method, request_path, query_string)
headers = {
"ACCESS-KEY": api_key,
"ACCESS-SIGN": signature,
"ACCESS-TIMESTAMP": timestamp,
"ACCESS-PASSPHRASE": access_passphrase,
"Content-Type": "application/json",
"locale": "en-US"
}

url = "https://api-contract.weex.com/" # Please replace with the actual API address
if method == "GET":
response = requests.get(url + request_path+query_string, headers=headers)
return response

def fills():
request_path = "/capi/v2/order/fills"
query_string = "?symbol=cmt_btcusdt&orderId=YOUR_ORDER_ID"
response = send_request_get(api_key, secret_key, access_passphrase, "GET", request_path, query_string)
print(response.status_code)
print(response.text)
if __name__ == '__main__':
fills()

2.Check the response

The example below indicates a successful response

{
"list": [
{
"tradeId": 0,
"orderId": 0,
"symbol": "cmt_btcusdt",
"marginMode": "SHARED",
"separatedMode": "SEPARATED",
"positionSide": "LONG",
"orderSide": "BUY",
"fillSize": "67",
"fillValue": "12",
"fillFee": "67",
"liquidateFee": "MAKER",
"realizePnl": "83",
"direction": "OPEN_LONG",
"liquidateType": "FORCE_LIQUIDATE",
"legacyOrdeDirection": "OPEN_LONG",
"createdTime": 1716712170527
}
],
"nextFlag": false,
"totals": 0
}

If the request fails, refer to the detailed error codes here, or contact technical support in the TG group.

Our customer support team will contact you once you pass the testing.

2.3 Funding & Model Testing

Once you have completed API testing and passed the qualification review, your account will receive the initial funds required for AI model testing. You may freely use these funds until January 5, 2026 to optimize your AI model.

If you encounter any technical issues or run out of test funds, please contact our official technical support group for assistance.

2.4 Pre-Competition Preparation & Account Reset

After the model testing phase, the official list of participants will be published, so please stay updated via the official participant list on the event page. To ensure fairness before the official competition begins, all participant accounts will be reset to a unified initial state, with your competition fund balances reset to 1,000 USDT, all open orders canceled, and all positions closed.

At this point, all pre-competition preparations are complete. Ensure your AI model is fully integrated with your API Key and ready to trade immediately once the competition begins.

Note: All official announcements, participant lists, and rule updates will be published on the WEEX official event page. Detailed schedules, ranking rules, and risk management terms will be provided in the official Competition Rules Handbook or via separate notices before the event.

Reference

  • FAQ

  • For specific inquiries or additional support: Ask Question

  • Hackathon Timeline Pre-Registration: Now – December 30, 2025 Pre-Season (Online): Early January 2026 (20 days) Finals (Online): Late February 2026 (17 days) Awarding Ceremony (Dubai): March 2026

You now have all the information needed to successfully register, prepare, and participate in AI Wars: WEEX Alpha Awakens. Follow each step carefully to ensure your AI model is fully integrated, tested, and ready for competition day.

Register now to secure your spot: https://www.weex.com/events/ai-trading. Good luck, and may the best algorithms win!