Skip to main content
An Organization represents a tenant in your application - typically each of your business customers. Organizations contain members, authentication settings, and RBAC policies that are isolated from other organizations.

Organization management

1

Create an organization

Create a new organization using the Create Organization endpoint:
curl --request POST \
  --url https://test.stytch.com/v1/b2b/organizations \
  --header 'Content-Type: application/json' \
  --user 'PROJECT_ID:SECRET' \
  --data '{
    "organization_name": "Acme Corporation",
    "organization_slug": "acme-corp",
    "email_allowed_domains": ["acme.com"]
  }'
Response:
{
  "status_code": 201,
  "organization": {
    "organization_id": "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
    "organization_name": "Acme Corporation",
    "organization_slug": "acme-corp",
    "email_allowed_domains": ["acme.com"],
    "email_jit_provisioning": "NOT_ALLOWED",
    "email_invites": "ALL_ALLOWED",
    "auth_methods": "ALL_ALLOWED",
    "allowed_auth_methods": [],
    "mfa_policy": "OPTIONAL"
  }
}
2

Update organization settings

Configure authentication methods, MFA policies, and other settings using the Update Organization endpoint:
curl --request PUT \
  --url https://test.stytch.com/v1/b2b/organizations/organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931 \
  --header 'Content-Type: application/json' \
  --user 'PROJECT_ID:SECRET' \
  --data '{
    "mfa_policy": "REQUIRED_FOR_ALL",
    "allowed_auth_methods": ["sso", "magic_link"],
    "email_jit_provisioning": "RESTRICTED",
    "email_allowed_domains": ["acme.com", "acmecorp.com"]
  }'
Key settings:
  • mfa_policy - Controls MFA requirements (OPTIONAL, REQUIRED_FOR_ALL)
  • auth_methods / allowed_auth_methods - Restrict which authentication methods members can use
  • email_jit_provisioning / email_allowed_domains - Configure automatic member provisioning by email domain
  • sso_jit_provisioning - Enable JIT provisioning for SSO connections
3

Search organizations

Find organizations by name, domain, or other criteria using the Search Organizations endpoint:
curl --request POST \
  --url https://test.stytch.com/v1/b2b/organizations/search \
  --header 'Content-Type: application/json' \
  --user 'PROJECT_ID:SECRET' \
  --data '{
    "query": {
      "operator": "AND",
      "operands": [
        {
          "filter_name": "organization_name",
          "filter_value": ["Acme"]
        }
      ]
    }
  }'

Trusted metadata

Organizations support trusted_metadata for storing application-specific data:
curl --request PUT \
  --url https://test.stytch.com/v1/b2b/organizations/organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931 \
  --header 'Content-Type: application/json' \
  --user 'PROJECT_ID:SECRET' \
  --data '{
    "trusted_metadata": {
      "subscription_tier": "enterprise",
      "billing_id": "cus_123456",
      "feature_flags": {
        "advanced_analytics": true
      }
    }
  }'
Metadata constraints:
  • Maximum 20 top-level keys
  • Cannot exceed 4KB in size
  • Backend integrations can read and write
  • Frontend integrations can only read
Do not store sensitive information (credit card details, etc.) in metadata.
See Metadata Update Behavior for how updates are merged.

Learn more