# `Puck.Content.Part`
[🔗](https://github.com/bradleygolden/puck/blob/v0.2.25/lib/puck/content.ex#L31)

A single content part within a message.

This is the core struct that represents any type of content.
Use the factory functions in `Puck.Content` to create parts.

# `content_type`

```elixir
@type content_type() :: :text | :image_url | :image | :file | :audio | :video
```

# `t`

```elixir
@type t() :: %Puck.Content.Part{
  data: binary() | nil,
  filename: String.t() | nil,
  media_type: String.t() | nil,
  metadata: map(),
  text: String.t() | nil,
  type: content_type(),
  url: String.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
