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

# Quickstart Guide

> Get up and running with Squiggle in minutes

## Step 1: Update Your WebSocket Connection

If you're already using the [OpenAI Realtime API](https://platform.openai.com/docs/guides/realtime/overview), simply update your WebSocket connection URL:

```javascript
const socket = new WebSocket('wss://ws.squiggle.ai/v1/realtime');
```

## Step 2: Initialize the Connection

Initialize the connection as you normally would with the [OpenAI Realtime API](https://platform.openai.com/docs/guides/realtime/overview). Squiggle is fully compatible, so your existing code should work without modifications.

## Step 3: Handle Squiggle Insights

Squiggle will send additional messages with insights via the websocket connection.

### Using Node `ws` Library

If you are using the Node.js `ws` library, you can use the`onmessage` callback to detect new insights:

```javascript
socket.onmessage = function(event) {
  const data = JSON.parse(event.data);
  if (data.type === 'insights.updated') {
    console.log('Received Session insights:', data.insights);
    // Handle the insight (e.g., display summary, extracted data, highlights, or flags)
  } else {
    // Handle regular OpenAI messages
  }
};
```

### Using the Realtime API JavaScript Client

OpenAI has published a [Realtime API client](https://github.com/openai/openai-realtime-api-beta) that provides a layer of abstraction over using the `ws` library directly. You can use the client to handle Squiggle insights:

```javascript
    client.on('realtime.event', (realtimeEvent: RealtimeEvent) => {
      // Update reference profile when insights are received
      if (realtimeEvent.event.type === 'insights.updated') {
        // Handle the insight (e.g., display summary, extracted data, highlights, or flags)
      }
    });
```

### Using the Squiggle REST API

You can also asycnhronously fetch insights related to sessions via the Squiggle REST API, including after the session has ended. Check out the [API Reference](api-reference/configuration) for more details.

## Step 4: Customize Your Configuration (Optional)

You can customize how Squiggle generates insights using the Squiggle REST API. Send a POST request to `https://api.squiggle.ai/api/configure` with your desired configuration:

```javascript
fetch('https://api.squiggle.ai/api/configure', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    apiKey: 'your-open-ai-api-key',
    configuration: {
      identifier: 'customConfigIdentifier',
      insightFrequency: 10, // Generate insights for every 10 conversation items
      customFields: [
        {
          name: 'userName',
          description: 'The name of the current user.',
          type: 'string'
        },
        {
          name: 'requestedProduct',
          description: 'The name of the product or service the user is requesting.',
          type: 'string'
        },
      ],
      flagInstructions: "Flag any instances of abusive or inappropriate content from users, and identify any potential AI safety risks or concerning AI behaviors in the conversation.",
      highlightInstructions: "Provide at least 3 and up to 10 key highlights (quotes or notes) that capture key aspects of the conversation. Specifically highlight any positive or negative quotes shared about the company's products or services."
    }
  })
})
.then(response => response.json())
.then(data => console.log('Configuration updated:', data));
```

That's it! You're now ready to use Squiggle in your application. Check out the Squiggle [API Reference](api-reference/configuration) for more detailed information on configuring your setup.
