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

# Contacts

> Manage contacts with the Go SDK

Contacts are automatically created when you send messages. You can retrieve and update contact information.

## Get Contact

```go theme={null}
result, err := client.Contacts.Get(context.TODO(), "con_abc123")
if err != nil {
	panic(err)
}

fmt.Println(result.ID)
fmt.Println(result.PhoneNumber)
fmt.Println(result.CountryCode)
fmt.Println(result.AvailableChannels)
fmt.Println(result.DefaultChannel)
```

## Get Contact by Phone

```go theme={null}
result, err := client.Contacts.GetByPhone(context.TODO(), "+14155551234")
if err != nil {
	panic(err)
}

fmt.Println(result.ID)
fmt.Println(result.AvailableChannels) // ["sms", "whatsapp"]
```

## Update Contact

```go theme={null}
result, err := client.Contacts.Update(context.TODO(), "con_abc123", zavudev.ContactUpdateParams{
	DefaultChannel: zavudev.String("whatsapp"),
	Metadata: map[string]string{
		"name": "John Doe",
		"tier": "premium",
	},
})
```

## List Contacts

```go theme={null}
result, err := client.Contacts.List(context.TODO(), zavudev.ContactListParams{
	Limit: zavudev.Int(50),
})
if err != nil {
	panic(err)
}

for _, contact := range result.Items {
	fmt.Println(contact.ID, contact.PhoneNumber)
}

// Filter by phone number
result, err := client.Contacts.List(context.TODO(), zavudev.ContactListParams{
	PhoneNumber: zavudev.String("+1415"),
})

// Pagination
var cursor *string
for {
	result, err := client.Contacts.List(context.TODO(), zavudev.ContactListParams{
		Cursor: cursor,
		Limit:  zavudev.Int(50),
	})
	if err != nil {
		panic(err)
	}

	for _, contact := range result.Items {
		fmt.Println(contact.ID)
	}

	if result.NextCursor == nil {
		break
	}
	cursor = result.NextCursor
}
```

## Phone Introspection

Validate a phone number and check available channels:

```go theme={null}
result, err := client.Introspect.Phone(context.TODO(), zavudev.PhoneIntrospectionParams{
	PhoneNumber: zavudev.String("+14155551234"),
})
if err != nil {
	panic(err)
}

fmt.Println(result.ValidNumber)      // true
fmt.Println(result.CountryCode)      // "US"
fmt.Println(result.NationalFormat)   // "(415) 555-1234"
fmt.Println(result.LineType)         // "mobile"
fmt.Println(result.AvailableChannels) // ["sms", "whatsapp"]
if result.Carrier != nil {
	fmt.Println(result.Carrier.Name) // "Verizon Wireless"
}
```
