# Steal My Model Challenge Instructions
## API
1. `POST /register`
- output: `{"player_token": "...", "query_limit": 8000}`
2. `POST /predict`
- header: `Authorization: Bearer <player_token>`
- input: `{"x": [float, ...]}` length `DIM`
- output: `{"label": 0|1, "remaining": int}`
3. `POST /submit`
- header: `Authorization: Bearer <player_token>`
- input: `{"n_guess": [float, ...], "beta_guess": float}`
- success rule: `max(abs(n_guess - n), abs(beta_guess - beta)) < CHECK_TOL`
Classifier rule:
- `label = 1 if dot(n, x) + beta >= 0 else 0`
- `n` is a hidden unit vector.
- Small random label flip noise may exist.
## Usage
Get a token first:
```bash
python get_token.py --run --url http://chal.thjcc.org:31443
```
Quick API example:
```bash
python get_token.py --run --url http://chal.thjcc.org:31443
python example.py
python example.py --run --url http://chal.thjcc.org:31443 --token <player_token> --dim 16 --x "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
```
If you used many queries or interrupted a run, register a new token before retrying