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

# Quickstart

> Get started with the III SDK in minutes

## Choose Your Language

The III SDK is available in three languages. Select your preferred language to get started:

<CardGroup cols={3}>
  <Card title="Node.js" icon="node-js" href="/nodejs/quickstart" color="#339933">
    TypeScript/JavaScript SDK with full async support
  </Card>

  <Card title="Python" icon="python" href="/python/quickstart" color="#3776AB">
    Async Python SDK with type hints
  </Card>

  <Card title="Rust" icon="rust" href="/rust/quickstart" color="#CE422B">
    High-performance async Rust SDK
  </Card>
</CardGroup>

## Quick Example

Here's a minimal example of using the III SDK across all three languages:

<Tabs>
  <Tab title="Node.js">
    ```typescript theme={null}
    import { init } from 'iii-sdk'

    // Initialize the SDK
    const iii = init('ws://localhost:49134')

    // Register a function
    iii.registerFunction(
      { id: 'greeting' },
      async (data: { name: string }) => {
        return { message: `Hello, ${data.name}!` }
      }
    )

    // Call the function
    const result = await iii.call('greeting', { name: 'World' })
    console.log(result.message) // "Hello, World!"
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    from iii import III

    # Initialize the SDK
    iii = III("ws://localhost:49134")

    # Register a function
    async def greeting(data):
        return {"message": f"Hello, {data['name']}!"}

    iii.register_function("greeting", greeting)

    # Connect and call the function
    await iii.connect()
    result = await iii.call("greeting", {"name": "World"})
    print(result["message"])  # "Hello, World!"
    ```
  </Tab>

  <Tab title="Rust">
    ```rust theme={null}
    use iii_sdk::III;
    use serde_json::json;

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        // Initialize the SDK
        let iii = III::new("ws://127.0.0.1:49134");
        iii.connect().await?;

        // Register a function
        iii.register_function("greeting", |input| async move {
            let name = input["name"].as_str().unwrap_or("World");
            Ok(json!({ "message": format!("Hello, {}!", name) }))
        });

        // Call the function
        let result = iii.call("greeting", json!({ "name": "World" })).await?;
        println!("{}", result["message"]);  // "Hello, World!"
        
        Ok(())
    }
    ```
  </Tab>
</Tabs>

## Core Concepts

Before diving deeper, familiarize yourself with these key concepts:

<CardGroup cols={2}>
  <Card title="Functions" icon="function" href="/concepts/functions">
    Register and invoke functions across services
  </Card>

  <Card title="Triggers" icon="bolt" href="/concepts/triggers">
    Automatically invoke functions based on events
  </Card>

  <Card title="Channels" icon="arrow-right-arrow-left" href="/concepts/channels">
    Stream data bidirectionally between functions
  </Card>

  <Card title="Context & Logging" icon="file-lines" href="/guides/context-logging">
    Access execution context and structured logging
  </Card>
</CardGroup>

## Next Steps

<Steps>
  <Step title="Choose your language">
    Select [Node.js](/nodejs/quickstart), [Python](/python/quickstart), or [Rust](/rust/quickstart) and follow the language-specific quickstart guide.
  </Step>

  <Step title="Learn core concepts">
    Understand the [architecture](/concepts/architecture) and how [functions](/concepts/functions) and [triggers](/concepts/triggers) work together.
  </Step>

  <Step title="Explore advanced features">
    Dive into [streaming channels](/concepts/channels), [observability](/guides/observability), and [error handling](/guides/error-handling).
  </Step>
</Steps>
