Skip to main content

Labels & Addresses

Labels

Label (category/folder) management via /core/v4/labels.

Operations

// Fetch labels filtered by type(s)
labels, err := c.GetLabels(ctx, proton.LabelLabel, proton.LabelFolder)

// Find a specific label by ID
label, err := c.GetLabel(ctx, labelID, proton.LabelLabel)

// Create a label
label, err := c.CreateLabel(ctx, proton.CreateLabelReq{
    Name:   "Personal",
    Color:  "#ff0000",
    Type:   proton.LabelLabel,
    Parent: parentID,
})

// Update a label
err := c.UpdateLabel(ctx, labelID, proton.UpdateLabelReq{
    Name: "Updated Name",
    Color: "#00ff00",
})

// Delete a label
err := c.DeleteLabel(ctx, labelID)

System Label Constants

Constant ID Description
InboxLabel "0" Inbox
AllSentLabel "2" All Sent
TrashLabel "3" Trash
SpamLabel "4" Spam
AllMailLabel "5" All Mail
StarredLabel "10" Starred

Email Addresses

Email address management via /core/v4/addresses.

Operations

// List addresses (sorted by order)
addresses, err := c.GetAddresses(ctx)

// Get a single address
addr, err := c.GetAddress(ctx, addressID)

// Reorder addresses
err := c.OrderAddresses(ctx, proton.OrderAddressesReq{...})

// Enable/disable address
err := c.EnableAddress(ctx, addressID)
err := c.DisableAddress(ctx, addressID)

// Delete address
err := c.DeleteAddress(ctx, addressID)

Address Types

Type Description
Original Original Proton address
Alias Proton alias
Custom Custom domain address
Premium Premium address
External Bring Your Own Email (BYOE)

BYOE Detection

if addr.IsBYOEAddress() {
    // External type with sending enabled
}

Key Types

Type Description
Label ID, parentID, name, path ([]string), color, type
LabelType Label, ContactGroup, Folder, System
Address ID, email, send/receive flags, status, type, order, display name, keys
AddressStatus Disabled, enabled, deleting
AddressType Original, alias, custom, premium, external

Path Handling

The API sends label path as a string (e.g., "Inbox/SubFolder"), which is split into a []string slice for Go use, with custom MarshalJSON/UnmarshalJSON.