> ## Documentation Index
> Fetch the complete documentation index at: https://openrouter-d02e98a0-mintlify-a46887cf.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ChatMessages - Go SDK

> ChatMessages type definition

<Warning>
  The Go SDK and docs are currently in beta.
  Report issues on [GitHub](https://github.com/OpenRouterTeam/go-sdk/issues).
</Warning>

Chat completion message with role-based discrimination

## Supported Types

### ChatAssistantMessage

```go lines theme={null}
chatMessages := components.CreateChatMessagesAssistant(components.ChatAssistantMessage{/* values here */})
```

### ChatDeveloperMessage

```go lines theme={null}
chatMessages := components.CreateChatMessagesDeveloper(components.ChatDeveloperMessage{/* values here */})
```

### ChatSystemMessage

```go lines theme={null}
chatMessages := components.CreateChatMessagesSystem(components.ChatSystemMessage{/* values here */})
```

### ChatToolMessage

```go lines theme={null}
chatMessages := components.CreateChatMessagesTool(components.ChatToolMessage{/* values here */})
```

### ChatUserMessage

```go lines theme={null}
chatMessages := components.CreateChatMessagesUser(components.ChatUserMessage{/* values here */})
```

## Union Discrimination

Use the `Type` field to determine which variant is active, then access the corresponding field:

```go lines theme={null}
switch chatMessages.Type {
	case components.ChatMessagesTypeAssistant:
		// chatMessages.ChatAssistantMessage is populated
	case components.ChatMessagesTypeDeveloper:
		// chatMessages.ChatDeveloperMessage is populated
	case components.ChatMessagesTypeSystem:
		// chatMessages.ChatSystemMessage is populated
	case components.ChatMessagesTypeTool:
		// chatMessages.ChatToolMessage is populated
	case components.ChatMessagesTypeUser:
		// chatMessages.ChatUserMessage is populated
}
```
