# Posts

### Post types

There are three types of posts in Circle spaces:

* **Basic**:
  * A post in a post space.
  * Supports text, links, images, videos, embedded media and much more.
  * Ideal for general discussions, announcements, or longer-form content.
* **Event**:
  * An event in an event space.
  * Includes a sophisticated but simple body and meta information
  * Optimal for visual storytelling, portfolios, or product showcases.
* **Image:**
  * A image in an image space.
  * Supports single or multiple images.
  * Optimal for visual storytelling, portfolios, or product showcases.

### Basic posts

Here's an example of the structure of a **basic** post in a posts space:

```typescript
{
  post_type: 'basic',
  space_type: 'basic',
  id: number,
  name: string,
  display_title: string,
  slug: string,
  body: {
    attachments: {},
    html: string,
  },
  body_plain_text: string,
  url: string,
  created_at: string,
  updated_at: string,
  space: {
    id: number,
    slug: string,
    name: string,
    emoji: string,
  },
  author: {
    id: number,
    name: string,
    avatar_url: string,
    roles: string[],
  },
  tiptap_body: TipTapRichTextBody
  // ... other attributes
}
```

### Image posts

Image posts are similar to basic posts, but include a **gallery** attribute:

* **gallery**: An array of images, each containing (along side other attributes):
  * Original image URL
  * Optimized image URL (for improved performance)
  * Dimensions (width and height)

```typescript
gallery: {
  id: number
  downloadable_images: boolean
  images: {
    id: number
    signed_id: string
    original_url: string
    url: string
    filename: string
    width: number
    height: number
  }[]
}
```

Galleries supports multiple images per post, and images are optimized automatically upon upload. An image may include additional metadata such dimensions, file size, EXIF data.

### Event posts

Event posts are designed for managing and displaying events in an event space.

In addition to the output from a **basic** post, you'll find event-specific attributes such as:

```typescript
{
  tiptap_body: TipTapRichTextBody
  event_attendees?: {
    count: number;
    records: User[];
  };
  event_settings_attributes: {
    starts_at: string;
    ends_at: string;
    in_person_location: string | null;
    hide_location_from_non_attendees: boolean;
    duration_in_seconds: number;
    rsvp_disabled: boolean;
    hide_attendees: boolean;
    send_email_reminder: boolean;
    send_in_app_notification_reminder: boolean;
    send_email_confirmation: boolean;
    send_in_app_notification_confirmation: boolean;
    enable_custom_thank_you_message: boolean;
    confirmation_message_title: string | null;
    confirmation_message_description: string | null;
    confirmation_message_button_title: string | null;
    confirmation_message_button_link: string | null;
    location_type: LocationType;
    virtual_location_url: string | null;
    live_stream_recording_url?: string | null;
    rsvp_limit?: number | null;
    rsvp_count: number;
  };
  event_recurring_settings_attributes: {
    frequency: 'daily' | 'weekly' | 'bi_weekly' | 'monthly' | 'monthly_weekday_based' | 'annually';
    ends_at: string;
    occurrences: string | null;
    range_type: string;
  };
  paywall_attributes?: {
    amount: number
    checkout_url: string
    currency_code: string
    currency_symbol: string
  }
  // ... other post attributes
}
```

\ <br>


---

# 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://api.circle.so/get-started/concepts/posts.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.
