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

# Getting Started

This walks through the shortest path from zero to a passed Final Test, using the Trading track as the example. Every other track follows the identical shape.

### 1. Create an account and get an API key

```bash
curl -X POST https://api.education.portablewallet.net/v1/auth/signup \
  -H "Content-Type: application/json" \
  -d '{
    "email": "dev@yourcompany.com",
    "password": "••••••••"
  }'
```

```json
{
  "user_id": "usr_7f21",
  "token": "eyJhbGciOi..."
}
```

Then generate an API key:

```bash
curl -X POST https://api.education.portablewallet.net/v1/me/api-keys \
  -H "Authorization: Bearer eyJhbGciOi..."
```

```json
{
  "api_key": "sk_9c2e1a..."
}
```

All requests below use this key: `Authorization: Bearer sk_9c2e1a...`

### 2. Provision a testnet wallet

Every Lab action needs a wallet to operate on.

```bash
curl -X POST https://api.education.portablewallet.net/v1/lab/testnet/wallets \
  -H "Authorization: Bearer sk_9c2e1a..." \
  -d '{ "chain": "eth-sepolia" }'
```

```json
{
  "wallet_id": "wlt_442",
  "address": "0x8f3a...19bd",
  "chain": "eth-sepolia"
}
```

Fund it from the faucet:

```bash
curl -X POST https://api.education.portablewallet.net/v1/lab/testnet/faucet \
  -H "Authorization: Bearer sk_9c2e1a..." \
  -d '{ "wallet_id": "wlt_442" }'
```

### 3. Practice in the Simulator

```bash
curl -X POST https://api.education.portablewallet.net/v1/simulator/trading/scenarios/limit-order-basics/start \
  -H "Authorization: Bearer sk_9c2e1a..."
```

```json
{
  "session_id": "sim_8891",
  "wallet_id": "wlt_442",
  "scenario": "limit-order-basics"
}
```

Perform the practice action:

```bash
curl -X POST https://api.education.portablewallet.net/v1/lab/trading/orders/limit \
  -H "Authorization: Bearer sk_9c2e1a..." \
  -H "session_id: sim_8891" \
  -d '{
    "wallet_id": "wlt_442",
    "pair": "BTC/USDC",
    "price": 61000,
    "amount": 0.01
  }'
```

Repeat as many times as needed — Simulator sessions are ungraded and unlimited.

### 4. Sit the Final Test

```bash
curl -X POST https://api.education.portablewallet.net/v1/final-test/trading/start \
  -H "Authorization: Bearer sk_9c2e1a..."
```

```json
{
  "session_id": "ft_2207",
  "wallet_id": "wlt_991",
  "attempts_remaining": 3,
  "time_limit_seconds": 900
}
```

Perform the same actions, now against the final-test session:

```bash
curl -X POST https://api.education.portablewallet.net/v1/lab/trading/orders/limit \
  -H "Authorization: Bearer sk_9c2e1a..." \
  -H "session_id: ft_2207" \
  -d '{
    "wallet_id": "wlt_991",
    "pair": "BTC/USDC",
    "price": 61000,
    "amount": 0.01
  }'
```

Submit when done:

```bash
curl -X POST https://api.education.portablewallet.net/v1/final-test/sessions/ft_2207/submit \
  -H "Authorization: Bearer sk_9c2e1a..."
```

```json
{
  "status": "passed",
  "score": 92,
  "steps_passed": 4,
  "steps_total": 4
}
```

### 5. Get the certificate

```bash
curl https://api.education.portablewallet.net/v1/me/certificates \
  -H "Authorization: Bearer sk_9c2e1a..."
```

```json
[
  {
    "certificate_id": "cert_5b10",
    "track": "trading",
    "tier": "pro",
    "issued_at": "2026-08-13T14:02:00Z",
    "verify_url": "https://api.education.portablewallet.net/v1/certificates/cert_5b10/verify"
  }
]
```

Done — that `verify_url` is public, no auth required, and is what a third party (an exchange, an employer) would check.

### Next steps

* See every action available per track under the `Trading Lab` (and other Lab) tags in the [API Reference](/05-api-reference.md).
* Read [Conventions](/04-conventions.md) for the standard request/response shape and error format used across the whole API.
* Try the same flow without writing code using the "Test it" panel on each endpoint in the [API Reference](/05-api-reference.md).


---

# 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://developer.portablewallet.net/02-getting-started.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.
