# Management-key endpoints

> List, create, fetch, update, and revoke taps over HTTP with an organization management key (fhm_), with the request and response shape for each call.

These endpoints manage **taps** and require a [management key](/organizations/management-keys)
(`fhm_`). Base URL: `https://api.firehose.com`. The same key also manages
[URL Watch subscriptions](/api-reference/url-watch-endpoints).

## List taps

```text
GET /v1/taps
```

```json
{
  "data": [
    {
      "id": "uuid",
      "name": "Brand Mentions",
      "status": "active",
      "token": "fh_full_tap_token",
      "token_prefix": "fh_abc",
      "rules_count": 3,
      "last_used_at": null,
      "created_at": "2026-02-27T00:00:00+00:00"
    }
  ]
}
```

A tap's `status` is either `active` or `paused`. A paused tap keeps its rules but matches
nothing and streams no updates — see [Pause / Resume a tap](#pause--resume-a-tap) below.

Returns each tap's full token, so one key is enough to enumerate taps and start streaming.

## Create tap

```text
POST /v1/taps
Content-Type: application/json

{ "name": "Brand Mentions" }
```

Returns `201` with the tap and its full `token`.

## Get tap

```text
GET /v1/taps/:id
```

## Update tap

```text
PUT /v1/taps/:id
Content-Type: application/json

{ "name": "New Name" }
```

Both `name` and `status` are accepted, and either may be sent on its own. `name` is a
string up to 255 characters; `status` is `active` or `paused`.

## Pause / Resume a tap

Pausing stops a tap from matching without deleting it or revoking its token. Send `status`:

```text
PUT /v1/taps/:id
Content-Type: application/json

{ "status": "paused" }
```

While paused, the tap's rules are withdrawn from matching, so no new updates are produced
and its stream stays quiet. The rules themselves are preserved. Resume by sending
`status: active`:

```text
PUT /v1/taps/:id
Content-Type: application/json

{ "status": "active" }
```

Resuming re-arms every rule on the tap. Because a paused tap doesn't count against your
plan's active-tap limit, resuming can be refused: if activating this tap would exceed the
limit for your [plan](/billing/plans), the call returns `422` and the tap stays paused.

A tap owned by a [Smart Digest](/smart-digest/overview) carries its digest with it: pausing the tap
takes the digest off its schedule, and resuming the tap puts it back.

## Revoke tap

```text
DELETE /v1/taps/:id
```

Returns `204` with no content. Revoking a Smart Digest's tap deletes the digest too, with its
reports and rules.

<Callout type="info">
  The complete, machine-readable reference (every field, the full query grammar, and all category
  and type values) is published as raw Markdown at [`/skill.md`](https://docs.firehose.com/skill.md).
</Callout>
