> ## Documentation Index
> Fetch the complete documentation index at: https://docs.playpicklx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Send your first court event in three steps.

## Before you start

You need two things from PicklX, both provisioned per venue during integration:

* The **Pulse host address** on the venue network — `http://<pulse-host>:4000`.
* A **shared bearer token** for that venue.

<Info>
  Treat the token like a password — it authenticates every request.
</Info>

## Send an event

<Steps>
  <Step title="Build the request">
    One `POST` to `/v1/events`, with a bearer token and a single event in the body.
  </Step>

  <Step title="Send it">
    ```bash theme={null}
    curl -X POST http://<pulse-host>:4000/v1/events \
      -H "Authorization: Bearer <shared-token>" \
      -H "Content-Type: application/json" \
      -d '{
        "event_id": "b7e3a91c4f25d8a0c1e6f3b2",
        "session_id": "session-court1-20260609-001",
        "venue_id": "venue-la-01",
        "court_id": "court-1",
        "eot": "2026-06-09T20:00:06.120Z",
        "type": "BALL_BOUNCE",
        "confidence": 0.95,
        "source": "your-system",
        "schema_version": "1.0",
        "revision": 0,
        "payload": { "x_ft": 4.2, "y_ft": 19.3, "is_in": true }
      }'
    ```
  </Step>

  <Step title="Read the response">
    A success returns **`202 Accepted`**:

    ```json theme={null}
    { "accepted": 1, "duplicates": 0 }
    ```

    `accepted` is how many events were newly stored; `duplicates` is how many were already
    seen and safely ignored (resending is safe — see
    [Delivery semantics](/delivery-semantics)).
  </Step>
</Steps>

## Next

<CardGroup cols={2}>
  <Card title="Full envelope" icon="code" href="/endpoint">
    Every field, the headers, and batching up to 500 events.
  </Card>

  <Card title="Handle errors" icon="triangle-exclamation" href="/errors">
    Which responses to retry, and which to fix.
  </Card>
</CardGroup>
