# Core concepts

## Basics

The API works on the exercise uploaded to the simulation space.

Each space has a unique key which you'll need to get from the account team.

To post messages you'll need a team and a persona. Hence the flow is:

* GET team (select session team as default)
* GET personas (select persona from whom the message should be sent)
* POST message to all, position, role or team

## Base URL

\*\*<https://api.conducttr.com/v1.1/eagle/**_{endpoint}>\_

```
https://api.conducttr.com/v1.1/eagle/
```

## Authentication

The account team will provide you with a unique key for the space you're working with.

## Channel Names

Internally the Conducttr system uses generic channel names rather than the ones you see in real life that you might be familiar with.  A full channel list is given below.

Some points to note:

* Media Pop-up = "notifications" with media attached
* The web channel for articles = "news"

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">microblog<br>gosocial<br>gosocialgroups<br>mediablog<br>news<br>videoblog<br>forum<br>bulletin<br>panda<br>bearsocial<br>telegraph<br>msngr<br>mail<br>socialmap<br>social-watch<br>websites<br>ticketing-system<br>browser</td><td valign="top"><p>notifications</p><p>captions<br>graph<br>log<br>checklist<br>portal<br>tv<br>map<br>blog<br>backchannel<br>teamchat<br>timer<br>messenger<br>log2</p></td></tr></tbody></table>

## Persona object

When using GET personas, the ZIP file (named `data.json`) contains a JSON **array** of persona objects. Each persona object has the following top-level keys:

```
{
  "identity": {
    "name": "Unity and Progress Party",
    "gender": "",
    "age": 0,
    "bio": "Main political party in power...",
    "pitch": null,
    "job_title": "",
    "cultural_identity": { "nationality": null, "ethnicity": null, "accent": null }
  },
  "narrative": { "role": null, "archetype": "Boss" },
  "affiliation": { "affiliation": "", "faction": "Ruling Party", "a3e": "Actor" },
  "place": { "location": null, "gps": null },
  "communications": {
    "text_alignment": "Left to Right",
    "channels": ["mail"],
    "writes_in": 0
  },
  "cognitive": { ... },
  "influence": { ... },
  "memory": { ... },
  "activity": { ... },
  "system_info": {
    "handle": "loc_gov_party",
    "classification": "Unclassified",
    "is_organisation": false,
    "matches_player": false,
    "positions_to_impersonate": [],
    "tags": ["Coalition", "Diplomacy", "Stability"],
    "hash": "3-59791",
    "name": "Unity and Progress Party",
    "profile_image_url": "https://conducttrdev-a.akamaihd.net/fa/.../unity-party.png"
  }
}
```

**Key fields for API calls:**

* **`system_info.hash`** — This is the **persona ID** used in messaging endpoints (e.g. `"3-59791"`). Pass this as the `persona` field in `POST /messages`.
* **`system_info.handle`** — The unique short identifier/handle for the persona (e.g. `"loc_gov_party"`). **This is what the exercise designer references when specifying a persona.**
* **`identity.name`** — The display name of the persona.
* **`system_info.name`** — Same as `identity.name` (duplicated for convenience).
* **`system_info.profile_image_url`** — URL to the persona's profile image.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://helpdocs.conducttr.com/feature-documentation/api/core-concepts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
