---
title: "List connected-signal integrations for a project"
method: GET
path: "/api/v1/projects/{projectId}/integrations"
tags: ["projects"]
---

# List connected-signal integrations for a project

`GET /api/v1/projects/{projectId}/integrations`

## Request

- Base URL: `https://index365.co`
- URL: `https://index365.co/api/v1/projects/{projectId}/integrations`
- Auth: HTTP bearer

Provider registry + per-project connection status for connected signals (GA4, Search Console, Tag Manager, ads, CRM). Until the hosted integration layer launches every provider reports connected=false with phase=planned; this endpoint exists so agents can discover the surface without guessing.

## Path parameters

- `projectId` string, uuid, required

## Response `200`

Integration statuses.

- object
  - `projectId` string, uuid
  - `integrations` object[]
    - `provider` 'google_analytics' | 'search_console' | 'google_tag_manager' | 'google_ads' | 'meta_ads' | 'linkedin_ads' | 'hubspot', required
    - `label` string, required
    - `phase` 'planned' | 'beta' | 'available', required
    - `access` 'read_only', required
    - `connected` boolean, required
    - `readScopeSummary` string
    - `valueSummary` string
  - `note` string

## Other responses

- `401`: Missing/unknown/revoked API key.
- `403`: Key lacks the required scope (error.code=insufficient_scope).
- `404`: Resource not found in this organization.
- `429`: Rate limit exceeded (60 req/min per key). Honor Retry-After.

---

[API](https://skmtc.dev/index365/apis/index365-api.md) · [All operations](https://skmtc.dev/index365/apis/index365-api/llms.txt) · [OpenAPI document](https://skmtc.dev/index365/apis/index365-api/revisions/87dd7b85edcb?raw)
