> For the complete documentation index, see [llms.txt](https://docs.floral.fun/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.floral.fun/api-v2/v2-search.md).

# Search and analytics

## Search posts

`GET /v2/search/posts` needs at least one of `q`, `hashtag` or `author`:

| Parameter         | Notes                                                                                      |
| ----------------- | ------------------------------------------------------------------------------------------ |
| `q`               | 2 to 100 characters, matched as plain text, not case-sensitive. Embedded cards don't count |
| `hashtag`         | With or without `#`. A post's topics count as its hashtags                                 |
| `author`          | `usr_<id>`, `<id>` or `@username`                                                          |
| `from`, `to`      | RFC 3339 with a timezone                                                                   |
| `type`            | Comma-separated: `original`, `quote`, `reply`, `repost`. Defaults to all but `repost`      |
| `exclude_bots`    | `true` to leave out bot accounts                                                           |
| `limit`, `cursor` | See [Pagination](/api-v2/v2-overview.md#pagination)                                        |

Results are newest first.

```bash
curl "https://api.floral.fun/v2/search/posts?hashtag=floral&from=2026-11-01T00:00:00Z&exclude_bots=true" \
  -H "Authorization: Bearer $TOKEN"
```

## Find people, communities and topics

`GET /v2/users/search?q=`, `/v2/communities/search?q=` and `/v2/topics/search?q=` each match on names and handles. People who've opted out of discovery and gated communities aren't included. You can still fetch someone directly if you already have their handle.

## Public feed

`GET /v2/feed/public` returns public posts, newest first. It takes `type`, `from`, `to`, `exclude_bots`, `limit` and `cursor`.

## Analytics

All analytics take `interval` (`hour` or `day`, default `day`), and `from` and `to` (default the last 30 days). A range can be up to 31 days by hour, or 366 days by day. Times are UTC.

| Endpoint                             | Returns                                                                              |
| ------------------------------------ | ------------------------------------------------------------------------------------ |
| `GET /v2/analytics/posts/{id}`       | `likes`, `replies`, `reposts` and `quotes` per interval, as additions minus removals |
| `GET /v2/analytics/users/{id}`       | `activity`, and `followers_net_by_day`, which is null if their lists are hidden      |
| `GET /v2/analytics/communities/{id}` | `activity`, and `members_net_by_day`                                                 |
| `GET /v2/analytics/topics/{slug}`    | `activity`                                                                           |
| `GET /v2/analytics/hashtags/{tag}`   | `activity`                                                                           |

```bash
curl "https://api.floral.fun/v2/analytics/hashtags/floral?interval=day" \
  -H "Authorization: Bearer $TOKEN"
```

```json
{
  "from": "2026-10-05T00:00:00.000Z",
  "to": "2026-11-04T00:00:00.000Z",
  "interval": "day",
  "hashtag": "floral",
  "activity": [
    {
      "at": "2026-11-03T00:00:00.000Z",
      "posts": 14,
      "unique_authors": 9,
      "current_likes": 120,
      "current_replies": 31,
      "current_reposts": 12,
      "current_views": 4800
    }
  ]
}
```

**How to read these:**

* `activity` counts original posts and quotes that are public now, grouped by when they were posted. Replies and reposts aren't included.
* `current_*` are today's totals on those posts, rather than what happened that day.
* A deleted or restricted post leaves `activity`, so past numbers can go down.
* Hours with nothing in them are left out of the list.
* `coverage_start` says how far back the additions and removals go. Before that date, a missing value means Floral has no record, rather than zero.

Floral provides these counts as they are, with no attention or influence score. You can use `exclude_bots=true` and the `quality` fields on posts to apply your own rules.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.floral.fun/api-v2/v2-search.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
