Prepare a Bopster market question
prepare_market_questionValidates a Bopster market question from approved templates, checks site, backend, and factory rules, pins metadata to IPFS, and returns the unsigned Reality.eth askQuestion transaction.
Instructions
Step 2 of creating a Bopster market. The question is built from one of the five Bopster templates (price threshold, event outcome, before a date, price change, compare assets), worded exactly as bopster.fun words it; free-text questions are not accepted. Checks the market against every rule the site, the backend and the factory enforce, pins its metadata to IPFS, and returns the unsigned Reality.eth askQuestion transaction. Non-custodial: nothing is signed or sent here.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | The nonce from get_login_message. | |
| title | Yes | Short title shown on the market card, e.g. "BTC above $90K on Oct 12". | |
| wallet | Yes | The wallet that will sign and send the transactions (0x...). Balances and positions are read for this address. | |
| category | Yes | One of Crypto, Tech, Internet, Business, Entertainment, Sports, Culture, Politics, Science, General (others are accepted, but can't be filtered for). | |
| end_time | Yes | When positions close: ISO 8601 with a timezone, on a whole minute, e.g. "2026-10-12T18:00:00Z". 20 minutes to 10 days from now. For a match, the kick-off. | |
| template | Yes | The question, as one of the five Bopster templates. Free-text questions are not accepted. | |
| signature | Yes | The personal_sign signature of the login message. | |
| source_url | Yes | The public page that will settle the answer. | |
| accept_terms | Yes | Creating a market accepts Bopster Fun's Terms and Conditions of Use, the same as on bopster.fun/create. | |
| creator_name | No | Display name for wallets without a Bopster profile. Ignored when the wallet has one: its alias is used. | |
| sports_match | No | Required when category is Sports. For a single match, the sport (end_time is then the kick-off, and the sport sets the resolution delay: football 180 min, knockout 240, basketball 180, ice hockey 210, rugby 180, American football/baseball 240, Formula 1 240); "other" for a sport not listed (set the delay yourself); "not_a_match" for transfers, tournaments and the like. | |
| resolution_delay_minutes | No | How long after close the oracle may answer: long enough for the result to exist. One of 15, 30, 60, 120, 180, 210, 240, 300, 360, 720, 1440, 2880, 4320, 5760, 7200; default 30. The question names close plus this delay as its deadline. Set by the sport for a match. |