> This is the Markdown version of the page. For the complete Lattice Developers documentation index, fetch https://developer.anduril.com/llms.txt. Append .md to any page URL for its clean Markdown.

# Quickstart

> Publishing a surface vessel to Lattice

Try the Lattice SDK by connecting Lattice environment and publishing a surface vessel entity.

## Before you begin

* Complete the [set up](/guides/developer-tools/sandboxes) steps to log in to the Sandbox and create an environment.
  If you do not have access to a Lattice Sandbox, [request to join the Lattice SDK developer program](https://anduril.com/lattice-sdk).
* Confirm you have the curl command-line tool, or install it from the [curl](https://curl.se/) website:

  **`Bash`**

  ```bash title="Bash"
  curl --version
  ```

## Publish a track

To get started with Lattice, consider this scenario: a friendly drone with access to Lattice has picked up a new track
that appears to be a surface vessel. To configure this drone to publish a track to Lattice as a new entity,
do the following:

#### Set your environment token

Use the **Lattice Auth Token** from your environment details page as your environment token, then export it so the following commands can authenticate with Lattice:

**`Bash`**

```bash title="Bash"
export ENVIRONMENT_TOKEN=<YOUR_LATTICE_AUTH_TOKEN>
```

#### Define the entity

Copy the following entity JSON object and save it in a new file named `entity.json`.
Replace the timestamp for `expiryTime` with a time in the future, and `sourceUpdateTime`
with the current time:

**`entity.json`**

```json maxLines=12 title="entity.json"
{
    "entityId": "QUICKSTART_ENTITY_ID",
    "description": "Quickstart example",
    "isLive": true,
    "expiryTime": "<YYYY-MM-DDThh:mm:ssTZD>",
    "aliases": {
        "name": "Simulated Surface Vessel"
    },
    "milView": {
        "disposition": "DISPOSITION_FRIENDLY",
        "environment": "ENVIRONMENT_SURFACE"
    },
    "location": {
        "position": {
            "latitudeDegrees": 33.69447852698943,
            "longitudeDegrees": -117.9173785693163,
            "altitudeHaeMeters": 0
        }
    },
    "ontology": {
        "template": "TEMPLATE_TRACK",
        "platformType": "Surface_Vessel",
        "specificType": "N/A"
    },
    "provenance": {
        "integrationName": "command_line_integration",
        "dataType": "example_data_type",
        "sourceUpdateTime": "<YYYY-MM-DDThh:mm:ssTZD>"
    }
}
```

#### Publish the entity to Lattice

From the same folder where you saved `entity.json`, use curl
to publish the entity to Lattice:

**`curl`**

```bash title="curl"
curl --location \
--request PUT "https://$LATTICE_ENDPOINT/api/v1/entities" \
--header "content-type: application/json" \
--header "authorization: Bearer $ENVIRONMENT_TOKEN" \
--header "anduril-sandbox-authorization: Bearer $SANDBOXES_TOKEN" \
--include \
--data "@entity.json"
```

#### Verify the response

If the request is successful, you get a <code>**200**</code> status response with an empty body: `{}`.

## Find the vessel in Lattice

To verify that your surface vessel was successfully published to Lattice,
do the following:

Open the Lattice UI.

Find the vessel in the Entity Explorer. Search by the
vessel's `aliases.name` to narrow the list:

![Shows the Entity Explorer in the Lattice Developer Console.](/_fern-img/72c242c7f0277f5a308bd2efb784cfcd9675f4dab9d1790bd9b195c6df74c7d0.webp)

Open the vessel to view its detail page, and confirm its location, name, and other
components match the entity you published:

![Shows the Simulated Surface Vessel's detail page in the Lattice Developer Console.](/_fern-img/f4a1cc6ad39c631b2b40aba648adf11805f4168f9e5be4005d1ec8ffe8aa5a55.webp)

## What's next?

* Explore the different [Lattice entity shapes](/guides/entities/overview).
* Learn how to [task an asset](/guides/tasks/overview) in Lattice
* Check out our [sample apps](/samples/overview) in GitHub.