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

# Concepts

> The five objects Aflux is built out of, and how money moves between them.

## The object model

<Steps>
  <Step title="Project">
    What you are advertising. Holds the name, description, logo, brand colours and an **AI context** — a business overview and a customer-demographics section that every later step reasons from. A project is long-lived; you run many campaigns under one.
  </Step>

  <Step title="Campaign">
    One flight of advertising under a project: an ad copy, a destination URL, a budget, a date window and a daily spread. Created against a `matchToken` from a channel search, which fixes the set of channels it may ever buy.
  </Step>

  <Step title="Placement">
    One campaign in one channel. This is where negotiation, approval, payment, publication and measurement happen. A campaign has as many placements as it has channels, plus a **queue** of channels waiting for a slot to free up.
  </Step>

  <Step title="Balance">
    Your prepaid money. Topped up by crypto deposit or promo code, drawn down by campaigns.
  </Step>

  <Step title="Asset">
    An image or video, either uploaded by you or generated by Aflux, attached to a project as a logo or to a campaign as creative.
  </Step>
</Steps>

## How money moves

A campaign's money is always in exactly one of three places, and the three always add up:

```
spent + reserved + remaining = budget
```

|               | What it is                                                                      |
| ------------- | ------------------------------------------------------------------------------- |
| **remaining** | Uncommitted. A further approval can still spend it.                             |
| **reserved**  | Committed when you approved a placement, not yet paid out to the channel owner. |
| **spent**     | Actually left your account — everything from `PAID` onwards.                    |

The whole budget leaves your **balance** when the campaign is created; from then on it moves between these three within the campaign. `GET /api/v1/campaigns/{campaignId}/analytics` reports all four figures.

<Note>
  Amounts are **decimal strings**, never floats — `"500.00"`, not `500.0`. Send them as strings and compare them as decimals.
</Note>

## Who approves what

Every placement carries an `approvalMode`:

| Mode       | Meaning                                                                       |
| ---------- | ----------------------------------------------------------------------------- |
| `USER`     | You approve each negotiated deal yourself, in the console or through the API. |
| `OPERATOR` | An Aflux operator approves on your behalf.                                    |

Separately, `creativeChangesAllowed` on the campaign decides whether a channel owner may propose his own wording of your ad. If he does, the placement waits in `AWAITING_CREATIVE_APPROVAL` with both texts on it — yours and his — until a human accepts or rejects the change. It defaults to `true`, so deals are not lost over trivial edits.

## The match token

A channel search returns a `matchToken` alongside its results. It matters more than it looks:

* Campaign creation consumes **exactly one** token and buys **exactly** the channels cached under it.
* A channel that is not in that search's results cannot be bought by that campaign, ever.
* A look-alike search can carry the previous selection forward by passing the old token, so the selection **extends** instead of being replaced.
* Tokens expire. Search again if yours has.

## Vocabulary

| Term                        | Meaning                                                                                                                                                            |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Ad copy**                 | The post text in Aflux markup — Telegram's own formatting plus `{link text}` and `--`. See [Ad copy](/guides/ad-copy).                                             |
| **Channel owner / manager** | The independent person who runs a Telegram channel and sells posts in it. Aflux negotiates with them; it does not control them.                                    |
| **Expected views**          | A forecast from the channel's own statistics, before anything is published.                                                                                        |
| **Measured views**          | What the post actually collected, read by the parser after publication.                                                                                            |
| **Queue**                   | Ranked channels from the approved match set that did not fit the active-placement limit. Not guaranteed — the queue stops when budget or the date window runs out. |
