Organizations

For instructions on how to authenticate to use this endpoint, see API overview.

Endpoints

GET
POST
GET
PATCH
DELETE
POST
POST
GET
GET
POST
GET
PATCH
DELETE

Retrieve

Required API key scopes

organization:read

Query parameters

  • limit
    integer
  • offset
    integer

Response


Example request

GET /api/organizations
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}
]
}

Retrieve

Required API key scopes

organization:read

Query parameters

  • limit
    integer
  • offset
    integer

Response


Example request

GET /api/organizations
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}
]
}

Create

Required API key scopes

organization:write

Request parameters

  • name
    string
  • logo_media_id
    stringnull
  • enforce_2fa
    booleannull
  • enforce_verified_domains
    booleannull
  • members_can_invite
    booleannull
  • members_can_create_projects
    booleannull
  • members_can_use_personal_api_keys
    boolean
  • members_can_see_org_members
    boolean
  • allow_publicly_shared_resources
    boolean
  • is_ai_data_processing_approved
    booleannull
  • is_ai_training_opted_in
    booleannull
  • default_experiment_stats_method
  • default_anonymize_ips
    boolean
  • default_role_id
    stringnull

Response


Example request

POST /api/organizations
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/\
-d name="string"

Example response

Status 201
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}

Create

Required API key scopes

organization:write

Request parameters

  • name
    string
  • logo_media_id
    stringnull
  • enforce_2fa
    booleannull
  • enforce_verified_domains
    booleannull
  • members_can_invite
    booleannull
  • members_can_create_projects
    booleannull
  • members_can_use_personal_api_keys
    boolean
  • members_can_see_org_members
    boolean
  • allow_publicly_shared_resources
    boolean
  • is_ai_data_processing_approved
    booleannull
  • is_ai_training_opted_in
    booleannull
  • default_experiment_stats_method
  • default_anonymize_ips
    boolean
  • default_role_id
    stringnull

Response


Example request

POST /api/organizations
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/\
-d name="string"

Example response

Status 201
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}

Retrieve

Required API key scopes

organization:read

Path parameters

  • id
    string

Response


Example request

GET /api/organizations/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}

Retrieve

Required API key scopes

organization:read

Path parameters

  • id
    string

Response


Example request

GET /api/organizations/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}

Update partial

Required API key scopes

organization:write

Path parameters

  • id
    string

Request parameters

  • name
    string
  • logo_media_id
    stringnull
  • enforce_2fa
    booleannull
  • enforce_verified_domains
    booleannull
  • members_can_invite
    booleannull
  • members_can_create_projects
    booleannull
  • members_can_use_personal_api_keys
    boolean
  • members_can_see_org_members
    boolean
  • allow_publicly_shared_resources
    boolean
  • is_ai_data_processing_approved
    booleannull
  • is_ai_training_opted_in
    booleannull
  • default_experiment_stats_method
  • default_anonymize_ips
    boolean
  • default_role_id
    stringnull

Response


Example request

PATCH /api/organizations/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/\
-d name="string"

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}

Update partial

Required API key scopes

organization:write

Path parameters

  • id
    string

Request parameters

  • name
    string
  • logo_media_id
    stringnull
  • enforce_2fa
    booleannull
  • enforce_verified_domains
    booleannull
  • members_can_invite
    booleannull
  • members_can_create_projects
    booleannull
  • members_can_use_personal_api_keys
    boolean
  • members_can_see_org_members
    boolean
  • allow_publicly_shared_resources
    boolean
  • is_ai_data_processing_approved
    booleannull
  • is_ai_training_opted_in
    booleannull
  • default_experiment_stats_method
  • default_anonymize_ips
    boolean
  • default_role_id
    stringnull

Response


Example request

PATCH /api/organizations/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/\
-d name="string"

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"slug": "string",
"logo_media_id": "a5d9f2f1-d934-4d2e-bebe-4b3cdcd08a33",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"membership_level": 1,
"plugins_access_level": 0,
"teams": [
{}
],
"projects": [
{}
],
"available_product_features": [
null
],
"is_member_join_email_enabled": true,
"metadata": {
"property1": "string",
"property2": "string"
},
"customer_id": "string",
"enforce_2fa": true,
"enforce_verified_domains": true,
"members_can_invite": true,
"members_can_create_projects": true,
"members_can_use_personal_api_keys": true,
"members_can_see_org_members": true,
"allow_publicly_shared_resources": true,
"member_count": 0,
"is_ai_data_processing_approved": true,
"is_ai_training_opted_in": true,
"is_ai_training_locked": true,
"is_ai_training_cta_shown": true,
"is_hipaa": true,
"default_experiment_stats_method": "bayesian",
"default_anonymize_ips": true,
"default_role_id": "string",
"is_active": true,
"is_not_active_reason": "string",
"is_pending_deletion": true
}

Delete

Required API key scopes

organization:write

Path parameters

  • id
    string

Example request

DELETE /api/organizations/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/

Example response

Status 204 No response body

Delete

Required API key scopes

organization:write

Path parameters

  • id
    string

Example request

DELETE /api/organizations/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/

Example response

Status 204 No response body

Create remove blocked members and enforce verified domains

Remove the members whose email domain is outside the organization's verified domains and turn enforce_verified_domains on, in one transaction. Owners are never removed; they keep gated access and can disable the setting themselves. Admin only.

Use this only when the caller has confirmed the removals. To turn the setting on without touching memberships, PATCH enforce_verified_domains on the organization instead.

Path parameters

  • id
    string

Response


Example request

POST /api/organizations/:id/remove_blocked_members_and_enforce_verified_domains
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/remove_blocked_members_and_enforce_verified_domains/

Example response

Status 200
RESPONSE
{
"success": true,
"removed_members": 0
}

Create request ai access

Notify organization admins that a member is requesting PostHog AI be enabled.

Path parameters

  • id
    string

Response


Example request

POST /api/organizations/:id/request_ai_access
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/request_ai_access/

Example response

Status 200
RESPONSE
{
"success": true
}

Retrieve teams data freshness

When each project in the organization last received data, broken down by kind of data.

Path parameters

  • id
    string

Response


Example request

GET /api/organizations/:id/teams/data_freshness
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:id/teams/data_freshness/

Example response

Status 200
RESPONSE
{
"results": [
{
"team_id": 0,
"freshness": "never",
"last_data_at": "2019-08-24T14:15:22Z",
"sources": [
{
"data_source": "string",
"last_data_at": "2019-08-24T14:15:22Z"
}
]
}
],
"lookback_days": 0,
"quiet_after_days": 0
}

List all cimd verification tokens

Manage CIMD verification tokens for an organization.

A partner embeds the plaintext token in their CIMD metadata document as verification_token inside the com.posthog object (the legacy top-level posthog_verification_token field still works as a fallback). When PostHog fetches the metadata, matching the token links the partner app to this organization and grants a higher default rate limit for account provisioning.

Each token is scoped at creation to the one cimd_url it will be published at, and verifies nowhere else. Two organizations may name the same URL; only the one whose token is actually served there verifies, so claiming a URL cannot be used to block a partner from verifying theirs.

The plaintext value is only available on creation; we store a hash.

Required API key scopes

organization:read

Query parameters

  • limit
    integer
  • offset
    integer

Response


Example request

GET /api/organizations/:organization_id/cimd_verification_tokens
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:organization_id/cimd_verification_tokens/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"label": "string",
"cimd_url": "string",
"mask_value": "string",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "[email protected]",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"last_used_at": "2019-08-24T14:15:22Z"
}
]
}

Create cimd verification tokens

Manage CIMD verification tokens for an organization.

A partner embeds the plaintext token in their CIMD metadata document as verification_token inside the com.posthog object (the legacy top-level posthog_verification_token field still works as a fallback). When PostHog fetches the metadata, matching the token links the partner app to this organization and grants a higher default rate limit for account provisioning.

Each token is scoped at creation to the one cimd_url it will be published at, and verifies nowhere else. Two organizations may name the same URL; only the one whose token is actually served there verifies, so claiming a URL cannot be used to block a partner from verifying theirs.

The plaintext value is only available on creation; we store a hash.

Required API key scopes

organization:write

Request parameters

  • label
    string
  • cimd_url
    string

Response


Example request

POST /api/organizations/:organization_id/cimd_verification_tokens
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:organization_id/cimd_verification_tokens/\
-d label="string",\
-d cimd_url="string"

Example response

Status 201
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"label": "string",
"cimd_url": "string",
"mask_value": "string",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "[email protected]",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"last_used_at": "2019-08-24T14:15:22Z",
"value": "string"
}

Retrieve cimd verification tokens

Manage CIMD verification tokens for an organization.

A partner embeds the plaintext token in their CIMD metadata document as verification_token inside the com.posthog object (the legacy top-level posthog_verification_token field still works as a fallback). When PostHog fetches the metadata, matching the token links the partner app to this organization and grants a higher default rate limit for account provisioning.

Each token is scoped at creation to the one cimd_url it will be published at, and verifies nowhere else. Two organizations may name the same URL; only the one whose token is actually served there verifies, so claiming a URL cannot be used to block a partner from verifying theirs.

The plaintext value is only available on creation; we store a hash.

Required API key scopes

organization:read

Path parameters

  • id
    string

Response


Example request

GET /api/organizations/:organization_id/cimd_verification_tokens/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:organization_id/cimd_verification_tokens/:id/

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"label": "string",
"cimd_url": "string",
"mask_value": "string",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "[email protected]",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"last_used_at": "2019-08-24T14:15:22Z"
}

Update cimd verification tokens

Manage CIMD verification tokens for an organization.

A partner embeds the plaintext token in their CIMD metadata document as verification_token inside the com.posthog object (the legacy top-level posthog_verification_token field still works as a fallback). When PostHog fetches the metadata, matching the token links the partner app to this organization and grants a higher default rate limit for account provisioning.

Each token is scoped at creation to the one cimd_url it will be published at, and verifies nowhere else. Two organizations may name the same URL; only the one whose token is actually served there verifies, so claiming a URL cannot be used to block a partner from verifying theirs.

The plaintext value is only available on creation; we store a hash.

Required API key scopes

organization:write

Path parameters

  • id
    string

Request parameters

  • cimd_url
    string

Response


Example request

PATCH /api/organizations/:organization_id/cimd_verification_tokens/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:organization_id/cimd_verification_tokens/:id/\
-d cimd_url="string"

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"label": "string",
"cimd_url": "string",
"mask_value": "string",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "[email protected]",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"created_at": "2019-08-24T14:15:22Z",
"last_used_at": "2019-08-24T14:15:22Z"
}

Delete cimd verification tokens

Manage CIMD verification tokens for an organization.

A partner embeds the plaintext token in their CIMD metadata document as verification_token inside the com.posthog object (the legacy top-level posthog_verification_token field still works as a fallback). When PostHog fetches the metadata, matching the token links the partner app to this organization and grants a higher default rate limit for account provisioning.

Each token is scoped at creation to the one cimd_url it will be published at, and verifies nowhere else. Two organizations may name the same URL; only the one whose token is actually served there verifies, so claiming a URL cannot be used to block a partner from verifying theirs.

The plaintext value is only available on creation; we store a hash.

Required API key scopes

organization:write

Path parameters

  • id
    string

Example request

DELETE /api/organizations/:organization_id/cimd_verification_tokens/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/organizations/:organization_id/cimd_verification_tokens/:id/

Example response

Status 204 No response body