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

# Quickstart

> Get a first prompt + a first trace in Basalt (Python v1)

<Warning>
  **The TypeScript SDK is not yet available for v1.** If you're using TypeScript/JavaScript, we recommend using the v0 docs: [v0/quickstart](/v0/quickstart).
</Warning>

<Info>
  **Prerequisites:** Before you begin, make sure to have an [account on Basalt](https://app.getbasalt.ai).
</Info>

## Quickstart (Python)

<Steps>
  <Step title="Install the SDK">
    ```bash theme={null}
    pip install basalt-sdk
    ```
  </Step>

  <Step title="Set your API key">
    ```bash theme={null}
    export BASALT_API_KEY="your_api_key_here"
    ```
  </Step>

  <Step title="Initialize the SDK">
    ```python theme={null}
    import os
    from basalt import Basalt

    basalt = Basalt(api_key=os.environ["BASALT_API_KEY"])
    ```
  </Step>

  <Step title="Start observing + get a prompt + call your LLM">
    This is the minimal “golden path”:

    1. `start_observe` (creates a trace), 2) `get_sync` (fetches the prompt), 3) your LLM call, 4) see the trace in Basalt.

    ```python theme={null}
    import os
    from basalt import Basalt
    from basalt.observability import ObserveKind, observe, start_observe

    basalt = Basalt(api_key=os.environ["BASALT_API_KEY"])

    @observe(name="LLM call", kind=ObserveKind.GENERATION)
    def call_llm(prompt_text: str) -> str:
        # Replace this with your OpenAI/Anthropic/etc. client call.
        return "..."

    @start_observe(feature_slug="quickstart", name="First trace")
    def run():
        prompt = basalt.prompts.get_sync(
            slug="my-prompt-slug",
            tag="production",
            variables={"customer_message": "Hello!"},
        )
        output = call_llm(prompt.text)
        observe.set_output({"output": output})
        return output

    if __name__ == "__main__":
        print(run())
        basalt.shutdown()
    ```
  </Step>
</Steps>

## What you get

After running the script, open the Basalt dashboard to see a trace with your root span (`start_observe`) and your LLM span (`observe`).

<img src="https://mintlify.s3.us-west-1.amazonaws.com/basalt/images/trace-example.svg" alt="Example trace in Basalt" />

Next: [Prompts](/v1/prompts/introduction) • [Observability](/v1/observabilite/introduction) • [API Reference](/v1/api-reference/introduction)
