---
title: Get Tenant by domain
slug: api-documentation/get-tenant-by-domain
docTags: 
createdAt: 2026-10-19T10:26:54.944Z
---

{
  "id": "B1xIO2yk4SbRqIP433C79",
  "type": "api-oas-v2",
  "data": {
    "method": "GET",
    "url": "https://api.upstartcommerce.com/v1/tenants/domain/{domain}",
    "servers": [
      {
        "url": "https://api.upstartcommerce.com/v1/tenants/domain/{domain}"
      }
    ],
    "name": "Get Tenant by domain",
    "description": "<p>This endpoint retrieves a tenant by its domain. Used for domain-based tenant resolution, typically during login flows or routing.</p>\n<p>Authorized permissions:</p>\n<ul>\n<li><code>tenant.read</code></li>\n</ul>",
    "contentType": "application/json",
    "request": {
      "pathParameters": [
        {
          "kind": "required",
          "name": "domain",
          "type": "string",
          "description": "Tenant domain identifier."
        }
      ],
      "headerParameters": [
        {
          "name": "accept",
          "type": "string",
          "kind": "optional",
          "description": "Generated from available response content types",
          "enum": [
            "application/json"
          ],
          "default": "application/json"
        }
      ],
      "queryParameters": [],
      "bodyDataParameters": [],
      "formDataParameters": [],
      "oAuthParameters": [],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "<p>Success-tenant returned.</p>",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"tenant\":\"acme001\",\"domain\":\"acme-retail\"}",
            "description": "<p>Response containing tenant identification information retrieved by domain lookup. Used to resolve a domain to its owning tenant, typically during login flows or domain-based routing. Lightweight response with only essential tenant identifiers.</p>",
            "customType": "TenantDomainResponse",
            "schema": [
              {
                "name": "domain",
                "kind": "required",
                "type": "string",
                "description": "<p>The domain prefix/subdomain associated with this tenant. This is the value used in the administrative portal URL (e.g., 'acme' in 'acme.upstartcommerce.com'). Unique across all tenants in the platform.</p>",
                "example": "acme-retail"
              },
              {
                "name": "tenant",
                "kind": "required",
                "type": "string",
                "description": "<p>The unique identifier for the tenant that owns this domain. Use this tenant ID in subsequent API calls that require tenant context via the x-upstart-tenant header. Immutable once created.</p>",
                "example": "acme001"
              }
            ],
            "modelRef": "#/components/schemas/TenantDomainResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "400",
        "description": "The request contained information that the server was unable to process. Appropriate errors are provided in the response body.",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"name\":\"ValidationError\",\"code\":\"INVALID_EMAIL_FORMAT\",\"detail\":\"The email field must be a valid email address. Received: \\\"invalid-email\\\"\"}",
            "description": "<p>Error response returned when request validation fails (HTTP 400). Contains details about which fields failed validation and why. Used for client-side error display and form validation feedback.</p>",
            "customType": "ValidationErrorResponse",
            "schema": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "<p>The error type, typically 'ValidationError' for all validation failures. Use this to distinguish validation errors from other error types in your error handling logic.</p>",
                "example": "ValidationError"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "<p>A validation-specific error code indicating the validation rule that failed. Examples include 'REQUIRED_FIELD_MISSING', 'INVALID_FORMAT', 'VALUE_OUT_OF_RANGE', 'DUPLICATE_VALUE'. Use for specific handling of different validation scenarios.</p>",
                "example": "INVALID_EMAIL_FORMAT"
              },
              {
                "name": "detail",
                "kind": "optional",
                "type": "string",
                "description": "<p>Human-readable validation error message describing which field(s) failed and why. Should be specific enough for developers to fix the issue. May include field paths for nested objects (e.g., 'sites[0].url is not a valid domain').</p>",
                "example": "The email field must be a valid email address. Received: \"invalid-email\""
              }
            ],
            "modelRef": "#/components/schemas/ValidationErrorResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "The provided credentials were not valid for this endpoint. It may be that they are expired or that the user's roles are insufficient.",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"name\":\"AuthorizationError\",\"code\":\"INSUFFICIENT_PERMISSIONS\",\"detail\":\"User does not have the required tenant.create permission to perform this operation.\",\"reason\":\"Your access token does not include the necessary permissions. Contact your administrator to request access.\"}",
            "description": "<p>Returned when credentials are missing, expired or insufficient (HTTP 401).</p>",
            "customType": "UnauthorizedError",
            "schema": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "<p>The high-level error category or type name.</p>"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "A specific error code identifying the exact error condition."
              },
              {
                "name": "detail",
                "kind": "optional",
                "type": "string",
                "description": "<p>A human-readable description of what went wrong.</p>"
              },
              {
                "name": "reason",
                "kind": "optional",
                "type": "string",
                "description": "Optional additional context or suggested resolution."
              }
            ],
            "modelRef": "#/components/schemas/UnauthorizedError",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "404",
        "description": "The requested resource was not found in the NoChannel system.",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"name\":\"ResourceNotFoundError\",\"code\":\"TENANT_NOT_FOUND\",\"detail\":\"The tenant with ID \\\"acme001\\\" was not found in the system.\",\"reason\":\"The tenant may have been deleted or you may not have permission to access it. Verify the tenant ID and your access rights.\"}",
            "description": "<p>Returned when the requested resource does not exist (HTTP 404).</p>",
            "customType": "NotFoundError",
            "schema": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "<p>The high-level error category or type name.</p>"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "A specific error code identifying the exact error condition."
              },
              {
                "name": "detail",
                "kind": "optional",
                "type": "string",
                "description": "<p>A human-readable description of what went wrong.</p>"
              },
              {
                "name": "reason",
                "kind": "optional",
                "type": "string",
                "description": "Optional additional context or suggested resolution."
              }
            ],
            "modelRef": "#/components/schemas/NotFoundError",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "500",
        "description": "<p>An unexpected internal server error occurred. The request may be retried, and if the problem persists, contact support with the traceId from the error response.</p>",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"name\":\"InternalServerError\",\"code\":\"UNEXPECTED_ERROR\",\"detail\":\"An unexpected error occurred while processing your request.\",\"reason\":\"Our team has been notified. Please try again, and if the problem persists, contact support with trace ID: 550e8400-e29b-41d4-a716-446655440000\"}",
            "description": "<p>Returned for an unexpected server-side failure (HTTP 500).</p>",
            "customType": "InternalServerError",
            "schema": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "<p>The high-level error category or type name.</p>"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "A specific error code identifying the exact error condition."
              },
              {
                "name": "detail",
                "kind": "optional",
                "type": "string",
                "description": "<p>A human-readable description of what went wrong.</p>"
              },
              {
                "name": "reason",
                "kind": "optional",
                "type": "string",
                "description": "Optional additional context or suggested resolution."
              }
            ],
            "modelRef": "#/components/schemas/InternalServerError",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "503",
        "description": "<p>A downstream dependency was unavailable, so the request could not be authorized or completed. The request may be retried.</p>",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"name\":\"Service Unavailable\",\"code\":\"UNKNOWN\",\"detail\":\"Permission resolution is unavailable, please retry\",\"reason\":\"A dependency required to authorize this request is temporarily unreachable. Please retry shortly.\"}",
            "description": "<p>Returned when a downstream dependency this request needed is unavailable (HTTP 503).</p>\n<p>Distinct from 401: the caller's credentials are fine. The service could not resolve the permissions\nrequired to authorize the request, so the outcome is unknown rather than denied. The request may be retried.</p>",
            "customType": "ServiceUnavailableError",
            "schema": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "<p>The high-level error category or type name.</p>"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "A specific error code identifying the exact error condition."
              },
              {
                "name": "detail",
                "kind": "optional",
                "type": "string",
                "description": "<p>A human-readable description of what went wrong.</p>"
              },
              {
                "name": "reason",
                "kind": "optional",
                "type": "string",
                "description": "Optional additional context or suggested resolution."
              }
            ],
            "modelRef": "#/components/schemas/ServiceUnavailableError",
            "isExpanded": true
          }
        ]
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "N04_x3nwRNOCAtp0JXot5",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request GET \\\n     --url https://api.upstartcommerce.com/v1/tenants/domain/{domain} \\\n     --header 'accept: application/json'"
        },
        {
          "id": "njzaME4eKMGfC8zbyu4HU",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"application/json\");\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.upstartcommerce.com/v1/tenants/domain/{domain}\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "wJbNEKW07ozYFAvylmq1X",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.upstartcommerce.com/v1/tenants/domain/{domain}\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "0cLSG3SXtCXFbcfNvGF2F",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.upstartcommerce.com/v1/tenants/domain/{domain}\"\n\npayload = {}\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "N04_x3nwRNOCAtp0JXot5"
    },
    "results": {
      "languages": [
        {
          "id": "m--tyBnyIXujcJezFhWnT",
          "language": "200",
          "code": "// Success-tenant returned.\n{\n  \"domain\": \"acme-retail\",\n  \"tenant\": \"acme001\"\n}"
        },
        {
          "id": "K9CDptUOtPyuXhrKDnVk1",
          "language": "400",
          "code": "// The request contained information that the server was unable to process. Appropriate errors are provided in the response body.\n{\n  \"name\": \"ValidationError\",\n  \"code\": \"INVALID_EMAIL_FORMAT\",\n  \"detail\": \"The email field must be a valid email address. Received: \\\"invalid-email\\\"\"\n}"
        },
        {
          "id": "Kzx80wzs1gsVVbOiWT4E_",
          "language": "401",
          "code": "// The provided credentials were not valid for this endpoint. It may be that they are expired or that the user's roles are insufficient.\n{\n  \"name\": \"\",\n  \"code\": \"\",\n  \"detail\": \"\",\n  \"reason\": \"\"\n}"
        },
        {
          "id": "FITV5knJCiDA8u_XMSQcP",
          "language": "404",
          "code": "// The requested resource was not found in the NoChannel system.\n{\n  \"name\": \"\",\n  \"code\": \"\",\n  \"detail\": \"\",\n  \"reason\": \"\"\n}"
        },
        {
          "id": "MP9ZuRtOfiKyM9H2j-6XE",
          "language": "500",
          "code": "// An unexpected internal server error occurred. The request may be retried, and if the problem persists, contact support with the traceId from the error response.\n{\n  \"name\": \"\",\n  \"code\": \"\",\n  \"detail\": \"\",\n  \"reason\": \"\"\n}"
        },
        {
          "id": "COzgy53vceONpopLbKCCK",
          "language": "503",
          "code": "// A downstream dependency was unavailable, so the request could not be authorized or completed. The request may be retried.\n{\n  \"name\": \"\",\n  \"code\": \"\",\n  \"detail\": \"\",\n  \"reason\": \"\"\n}"
        }
      ],
      "selectedLanguageId": "m--tyBnyIXujcJezFhWnT"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}