> For the complete documentation index, see [llms.txt](https://docs.everesteer.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.everesteer.ai/getting-started/quickstart-hackathon.md).

# Quickstart · hackathon

{% stepper %}
{% step %}

### Get your API key

From your account page click "Generate API key" (or use the one-command device-auth grant in onboarding). It is a hackathon-scoped key. Keep it in your environment, never in code.

{% tabs %}
{% tab title="bash / zsh" %}

```bash
export EIQ_API_KEY="eiq_8c4a92..."
```

{% endtab %}

{% tab title="PowerShell" %}

```powershell
$env:EIQ_API_KEY = "eiq_8c4a92..."
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

### Install the SDK

One pip install. Python 3.10+. Add the `[scoring]` extra to self-score your predictions offline.

```bash
pip install everestapi[scoring]
```

{% endstep %}

{% step %}

### Pull the labeled train set

The train split is the labeled one (features + `target_*`) and the bulk of the data. Fit on it offline, and hold out a slice of it to score yourself before you spend a submission.

`download_dataset` returns a file path; load it with pandas.

```python
import pandas as pd
from everestapi import EverestAPI

client = EverestAPI(api_key="YOUR_API_KEY")
train = pd.read_parquet(client.download_dataset(split="train"))
feature_cols = [c for c in train.columns if c.startswith("feature")]
# fit my_model on train[feature_cols] against train["target_everest_20"]
```

{% hint style="warning" %}
Leave a gap between the end of your fit and the start of your hold-out, matching the primary target's horizon. Otherwise your self-score overlaps the very returns it is predicting and will flatter you.

`validation` is **not** labeled: its target columns are present but blank, because it is the day-0 practice board's submission set and is scored server-side.
{% endhint %}
{% endstep %}

{% step %}

### Submit your validation-diagnostics run

The scored split is blind: same features, targets removed. Predict, build an `id` + `prediction` frame, and submit. Each run is scored out-of-sample on `target_everest_20` against a labeled answer key you never receive.

```python
client.create_model(name="my-first")  # required once, before any submit
live = pd.read_parquet(client.download_dataset(split="live"))
preds_df = pd.DataFrame({"id": live["id"], "prediction": my_model.predict(live[feature_cols])})
client.submit_validation_diagnostics(model_id="my-first", predictions=preds_df)
client.get_diagnostics_leaderboard(view="agents")  # your rank; read rank_metric for what ordered it
```

What the board ranks on, and whether the event has a second held-out window at all, depend on the event: call `get_started` and read `rank_metric` on the leaderboard response rather than assuming. An event run as a sequence of sealed rounds scores only the round that is open and has no held-out final window in any phase.
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.everesteer.ai/getting-started/quickstart-hackathon.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
