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

# Connected accounts

Connected accounts are customer-owned connections to publishing, messaging,
review, and advertising platforms. Caller-owned profile keys group connected
accounts, and API routes always use Kavenio account IDs instead of raw provider
tokens.

## List accounts

```http theme={null}
GET /v1/accounts?profileId=customer_user_123&platform=googlebusiness
Authorization: Bearer kvn_...
```

Use `limit` and `cursor` for pagination. The account response includes safe
public metadata, readiness, scopes, permissions, and status. It never returns
raw provider credentials.

## Health

```http theme={null}
POST /v1/accounts/acc_123/health
Authorization: Bearer kvn_...
```

Health checks report reconnect and readiness issues. For Google Business this
can include missing scopes, revoked credentials, missing selected location,
unverified listings, or missing permissions.

For Bluesky, health checks validate the encrypted App Password credentials and
surface reconnect needs when the provider rejects the credential session.

## Bluesky direct messages

Bluesky DMs use typed account routes. These routes use the connected account's
PDS and Bluesky Chat service proxy; they are not broad AT Protocol proxy routes.

| Capability    | Routes                                                                        |
| ------------- | ----------------------------------------------------------------------------- |
| Conversations | `GET /v1/accounts/:accountId/bluesky-conversations`                           |
| Messages      | `GET /v1/accounts/:accountId/bluesky-conversations/:conversationId/messages`  |
| Send message  | `POST /v1/accounts/:accountId/bluesky-conversations/:conversationId/messages` |
| Mark read     | `POST /v1/accounts/:accountId/bluesky-conversations/:conversationId/read`     |
| Archive       | `POST /v1/accounts/:accountId/bluesky-conversations/:conversationId/archive`  |

Kavenio supports text-only Bluesky DMs. DM attachments and standalone unarchive
are not exposed because the verified Bluesky Chat API surface does not provide
those operations as normal supported actions.

## Google Business management

Google Business uses typed account routes. These are not broad Google API proxy
routes.

| Capability               | Routes                                                            |
| ------------------------ | ----------------------------------------------------------------- |
| Location details         | `GET/PUT /v1/accounts/:accountId/gmb-location-details`            |
| Attributes and amenities | `GET/PUT /v1/accounts/:accountId/gmb-attributes`                  |
| Attribute metadata       | `GET /v1/accounts/:accountId/gmb-attribute-metadata`              |
| Services                 | `GET/PUT /v1/accounts/:accountId/gmb-services`                    |
| Food menus               | `GET/PUT /v1/accounts/:accountId/gmb-food-menus`                  |
| Photos                   | `GET/POST/DELETE /v1/accounts/:accountId/gmb-media`               |
| Reviews                  | `GET /v1/accounts/:accountId/gmb-reviews`                         |
| Review replies           | `POST/DELETE /v1/accounts/:accountId/gmb-reviews/:reviewId/reply` |
| Verification             | `/v1/accounts/:accountId/gmb-verifications*`                      |
| Place actions            | `GET/POST/PUT/DELETE /v1/accounts/:accountId/gmb-place-actions`   |

Most Google Business routes accept an optional `locationId` when the caller
needs a specific location instead of the selected default location.

## Review inbox

```http theme={null}
GET /v1/inbox/reviews?platform=googlebusiness&limit=25
Authorization: Bearer kvn_...
```

The inbox endpoint reads reviews across supported accounts and returns partial
failure metadata when one account cannot be queried.

## Analytics

```http theme={null}
GET /v1/analytics/googlebusiness/performance?accountId=acc_123&metrics=WEBSITE_CLICKS,CALL_CLICKS&startDate=2026-06-01&endDate=2026-06-07
Authorization: Bearer kvn_...
```

```http theme={null}
GET /v1/analytics/googlebusiness/search-keywords?accountId=acc_123&startMonth=2026-05&endMonth=2026-06
Authorization: Bearer kvn_...
```

Performance data is daily and can lag Google provider availability. Search
keyword data is monthly, and Google may return threshold values instead of exact
impressions for privacy. Keyword rows use `valueType: "exact"` with
`impressions`, or `valueType: "threshold"` with `threshold`.
