---
title: "Update a team"
method: PATCH
path: "/teams/{key}"
tags: ["Teams"]
---

# Update a team

`PATCH /teams/{key}`

Update an existing team by ID or slug

## Path parameters

- `key` string, required — Team key - either a unique ID (tem_xxx format) or URL-friendly slug

## Request body

- object
  - `name` string — Display name of the team organization. Must be between 3 and 30 characters
  - `slug` string — URL-friendly slug for the team organization. Must be unique within tenant and between 3 and 30 characters
  - `supportEmail` string, email, nullable — Support email for customer inquiries. Pass null to clear, omit to leave unchanged.
  - `publicBaseUrl` string, uri, nullable — Public website base URL for team-owned event and order links. Pass null to clear, omit to leave unchanged.
  - `image` object, nullable — Team image. Pass null to clear, omit to leave unchanged.
    - `src` string, uri, required
    - `alt` string, required
    - `width` number, required
    - `height` number, required
  - `metadata` object — Flexible key-value metadata storage for custom configuration. Similar to Stripe's metadata API. Maximum 50 keys, key names up to 40 characters, values up to 500 characters.
  - `approval` 'PENDING' | 'APPROVED' | 'REJECTED' — Approval status of the team. PENDING: awaiting review, APPROVED: can create promoters/venues/events, REJECTED: cannot operate
  - `deletedAt` string, date-time — Timestamp in ISO 8601 format when the team was soft deleted. Only present for deleted teams.
  - `gateway` object — Connected payment gateway for direct payouts. When connected, funds from ticket sales go directly to the team's account with platform fees deducted.
    - `provider` 'STRIPE' | 'AIRWALLEX', required — Payment gateway provider type
    - `connectedAt` string, date-time, required — Timestamp when the payment gateway was connected to this team
    - `connectedBy` string, required — User ID of the team member who connected the payment gateway
    - `accountId` string, required — Connected account ID. For Stripe: acct_xxxxx. For Airwallex: business account open ID.
    - `scope` 'TEAM' | 'EVENTS' — Stripe Connect routing scope. TEAM routes all team events through Stripe Connect. EVENTS routes only selected events.
    - `eventIds` string[] — Event IDs routed through Stripe Connect when scope is EVENTS.
    - `chargesEnabled` boolean — Whether the connected Stripe account can currently accept charges.
    - `payoutsEnabled` boolean — Whether the connected Stripe account can currently receive payouts.
    - `requirementsDue` string[] — Stripe Connect account requirements currently due before the account can remain fully enabled.
    - `disabledReason` string — Stripe disabled reason for the connected account, when Stripe reports one.
    - `syncedAt` string, date-time — Timestamp when gateway account status was last synced from the provider.

## Response `200`

OK

- object
  - `team` object, required
    - `id` string, required — Unique identifier for the team organization
    - `createdAt` string, date-time, required — Timestamp in ISO 8601 format when the team was created
    - `updatedAt` string, date-time, required — Timestamp in ISO 8601 format when the team was last updated
    - `name` string, required — Display name of the team organization. Must be between 3 and 30 characters
    - `slug` string, required — URL-friendly slug for the team organization. Must be unique within tenant and between 3 and 30 characters
    - `supportEmail` string, email — Support email address for customer inquiries. Used as reply-to address in order confirmation emails
    - `publicBaseUrl` string, uri — Optional public website base URL for team-owned event and order links. When present, it overrides the tenant public base URL.
    - `image` object — Team image with dimensions and alt text for branding across the platform
      - `src` string, uri, required
      - `alt` string, required
      - `width` number, required
      - `height` number, required
    - `metadata` object — Flexible key-value metadata storage for custom configuration. Similar to Stripe's metadata API. Maximum 50 keys, key names up to 40 characters, values up to 500 characters.
    - `approval` 'PENDING' | 'APPROVED' | 'REJECTED', required — Approval status of the team. PENDING: awaiting review, APPROVED: can create promoters/venues/events, REJECTED: cannot operate
    - `deletedAt` string, date-time — Timestamp in ISO 8601 format when the team was soft deleted. Only present for deleted teams.
    - `tenantId` string, required — Tenant ID for multi-tenant isolation
    - `isAdmin` boolean — Whether this team is the tenant admin team
    - `isDemo` boolean, required — Whether this team is protected seeded demo data
    - `gateway` object — Connected payment gateway for direct payouts. When connected, funds from ticket sales go directly to the team's account with platform fees deducted.
      - `provider` 'STRIPE' | 'AIRWALLEX', required — Payment gateway provider type
      - `connectedAt` string, date-time, required — Timestamp when the payment gateway was connected to this team
      - `connectedBy` string, required — User ID of the team member who connected the payment gateway
      - `accountId` string, required — Connected account ID. For Stripe: acct_xxxxx. For Airwallex: business account open ID.
      - `scope` 'TEAM' | 'EVENTS' — Stripe Connect routing scope. TEAM routes all team events through Stripe Connect. EVENTS routes only selected events.
      - `eventIds` string[] — Event IDs routed through Stripe Connect when scope is EVENTS.
      - `chargesEnabled` boolean — Whether the connected Stripe account can currently accept charges.
      - `payoutsEnabled` boolean — Whether the connected Stripe account can currently receive payouts.
      - `requirementsDue` string[] — Stripe Connect account requirements currently due before the account can remain fully enabled.
      - `disabledReason` string — Stripe disabled reason for the connected account, when Stripe reports one.
      - `syncedAt` string, date-time — Timestamp when gateway account status was last synced from the provider.
    - `member` object — Current user's membership details for this team. Present when user is a member.
      - `id` string, required — Current user's team member identifier for this team
      - `permissions` string[], required — Permissions the current user has for this team. Controls access to team resources.
      - `isOwner` boolean, required — Whether the current user is the owner of this team. Owners have full control.
    - `stripeConnectAvailability` object — Stripe Connect availability metadata for tenant payment settings UI.
      - `available` boolean, required — Whether Stripe Connect can be used for the selected team, event, and currency.
      - `reasons` string[], required — Machine-readable reasons Stripe Connect is unavailable. Empty when available is true.
      - `supportedCurrencies` string[], required — Currencies currently supported for Stripe Connect routing in this tenant flow.

## Other responses

- `400` — 400
- `401` — 401
- `403` — 403
- `404` — 404
- `409` — 409
- `412` — 412
- `422` — 422
- `429` — 429
- `500` — 500
- `501` — 501
- `503` — 503

---

[API](https://skmtc.net/session/apis/session-services-api.md) · [All operations](https://skmtc.net/session/apis/session-services-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/session/session-services-api/versions/a1bb6f6c8a2e/schema)
