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

# Create and Configure a Nodepick Compute Node Quickly

> Learn how to provision a new compute node on Nodepick using the dashboard, Python SDK, or HTTP API. Nodes are ready in under 30 seconds.

Provisioning a node on Nodepick takes less than 30 seconds. You can create a node through the dashboard for a visual experience, use the Python SDK to integrate node creation directly into your code, or call the HTTP API from any environment that can make HTTP requests. All three methods provision the same underlying infrastructure — pick whichever fits your workflow.

## Provision a Node

<Tabs>
  <Tab title="Dashboard">
    The Nodepick dashboard gives you a point-and-click interface for creating and configuring nodes without writing any code.

    <Steps>
      <Step title="Open Node Management">
        Log in to your Nodepick account and navigate to the **Node Management** section in the left sidebar.
      </Step>

      <Step title="Click Create Node">
        Click the **Create Node** button in the top-right corner of the Node Management page.
      </Step>

      <Step title="Configure your resources">
        Select the number of CPU cores, the amount of RAM, the storage size, and whether you want a routable IP address attached to this node.
      </Step>

      <Step title="Confirm and provision">
        Review your configuration and click **Confirm**. Nodepick begins provisioning immediately. Your node will appear in the Node Management list with a `provisioning` status and transition to `running` within 30 seconds.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Python SDK">
    Use the Python SDK to create nodes programmatically. This is ideal for automated pipelines, scripts, or applications that need to spin up compute on demand.

    Install the SDK if you haven't already:

    ```bash theme={null}
    pip install nodepick
    ```

    Then create a node with a single call:

    ```python theme={null}
    from nodepick import nodepick

    client = nodepick(api_key="YOUR_API_KEY")

    # Create a new node
    node = client.create_node()
    print(f"Node ID: {node['id']}")
    print(f"Status: {node['status']}")
    ```

    The `create_node()` call returns immediately with the node's initial details. Poll `client.get_node_details(node['id'])` if you need to wait for the node to reach `running` status before proceeding.
  </Tab>

  <Tab title="HTTP API">
    You can create a node by sending a `POST` request to the Nodepick API. This works from any language or tool that supports HTTP.

    ```bash theme={null}
    curl -X POST https://api.nodepick.ai/nodes \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json"
    ```

    Replace `YOUR_API_KEY` with your Nodepick API key, which you can find in your account settings.
  </Tab>
</Tabs>

## Expected Response

Regardless of which method you use, a successful create request returns a JSON object with the node's initial state:

```json theme={null}
{
  "id": "node_abc123",
  "status": "provisioning",
  "ip_address": null,
  "created_at": "2024-01-15T10:30:00Z"
}
```

| Field        | Description                                                                                                               |
| ------------ | ------------------------------------------------------------------------------------------------------------------------- |
| `id`         | The unique identifier for your node. Save this — you'll use it to retrieve details, connect via SSH, and delete the node. |
| `status`     | The current lifecycle state. Starts as `provisioning` and transitions to `running` within 30 seconds.                     |
| `ip_address` | The routable IP address assigned to the node, if one was requested. `null` while the node is still provisioning.          |
| `created_at` | The UTC timestamp when the node was created. This is also when billing begins.                                            |

<Note>
  Billing starts the moment a node is created, even while it is still in the `provisioning` state. To avoid unnecessary charges, delete nodes as soon as you no longer need them.
</Note>

## Next Steps

Now that your node is provisioned, you're ready to use it.

<CardGroup cols={2}>
  <Card title="SSH Access" icon="terminal" href="/nodes/ssh-access">
    Connect to your running node with full root access using SSH.
  </Card>

  <Card title="Manage Nodes" icon="sliders" href="/nodes/manage">
    List your nodes, inspect their details, and delete them when you're done.
  </Card>
</CardGroup>
