---
title: "Create or Update Tenant"
method: PUT
path: "/tenants/{tenant_id}"
tags: ["Tenants"]
---

# Create or Update Tenant

`PUT /tenants/{tenant_id}`

Idempotently creates or updates a tenant. Required before associating destinations.

## Request body

- TenantUpsert
  - `metadata` object, nullable — Optional key/value metadata to store with the tenant.

## Response `200`

Tenant updated details.

- Tenant
  - `id` string — User-defined system ID for the tenant.
  - `destinations_count` integer — Number of destinations associated with the tenant.
  - `topics` string[] — List of subscribed topics across all destinations for this tenant.
  - `metadata` object, nullable — Arbitrary key-value pairs for storing contextual information about the tenant.
  - `created_at` string, date-time — ISO Date when the tenant was created.
  - `updated_at` string, date-time — ISO Date when the tenant was last updated.

## Other responses

- `201` — Tenant created details.
- `401` — Missing or invalid authentication credentials.
- `422` — Request body fails validation.
- `500` — Unexpected server error.

---

[API](https://skmtc.net/hookdeck/apis/outpost-api.md) · [All operations](https://skmtc.net/hookdeck/apis/outpost-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hookdeck/outpost-api/revisions/506c7bcee34b/schema)
