# JWT public key (/docs/api-reference/public-keys/get-public-keys-sombra-general-signing-key)

Fetch the public key, which you should use to validate incoming webhooks from Transcend. This value can be cached for 1 hour. Please refer to this guide for more information on how to verify webhooks with this public key.

## GET /public-keys/sombra-general-signing-key

```json
{
  "servers": [
    {
      "url": "https://multi-tenant.sombra.transcend.io",
      "description": "Multi-tenant (EU)"
    },
    {
      "url": "https://multi-tenant.sombra.us.transcend.io",
      "description": "Multi-tenant (US)"
    },
    {
      "description": "Self-hosted",
      "url": "https://_yourOrganizationSombraURL_.com"
    },
    {
      "description": "Preference Store in Europe",
      "url": "https://consent.transcend.io"
    },
    {
      "description": "Preference Store in the U.S.",
      "url": "https://consent.us.transcend.io"
    },
    {
      "description": "Rules Automation webhook ingestion (EU)",
      "url": "https://rule-automation.transcend.io"
    },
    {
      "description": "Rules Automation webhook ingestion (US)",
      "url": "https://rule-automation.us.transcend.io"
    }
  ],
  "security": [
    {
      "Transcend_API_Key": [],
      "Sombra_Token": [],
      "Transcend_API_Key_If_Multitenant": []
    }
  ],
  "operation": {
    "summary": "JWT public key",
    "responses": {
      "200": {
        "description": "A plaintext PEM-formatted public key, with key algorithm P-384 (ECDSA secp384r1)",
        "content": {
          "text/plain": {
            "schema": {
              "type": "string"
            },
            "examples": {
              "Sample response": {
                "value": "-----BEGIN PUBLIC KEY-----\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEjg6f5et3BPYEiWa8z8niFPZqEafH7WcE\n/fuoPzBG6S/4VCxDhZasu4uQZbNhmfzKkLZPCF5BIJRZqjtfU7/T/ZGNj/89L2aC\nk9nM6sc+KoNSrv/xlVMKFksVFnnhyGAf\n-----END PUBLIC KEY-----"
              }
            }
          }
        }
      },
      "400": {
        "description": "While this request passed authentication, the input is malformed. Please double-check that your code conforms to our API specification.",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "401": {
        "description": "There was a problem authenticating your request. This may be an issue with the Transcend API key (\"authorization\" header), or the Sombra API key (\"x-sombra-authorization\" header used for self-hosted gateways only).",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "413": {
        "description": "The request body is too large. JSON and raw bodies must be less than 50MB. URL encoded bodies must be less than 30MB.",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "429": {
        "description": "You are sending requests too quickly and have hit our rate limit. If you hit this, you'll need to throttle your request velocity or try again later.",
        "headers": {
          "Retry-After": {
            "description": "The number of seconds to wait before retrying.",
            "schema": {
              "type": "integer"
            }
          },
          "X-RateLimit-Limit": {
            "description": "The maximum number of requests allowed in the time window.",
            "schema": {
              "type": "integer"
            }
          },
          "X-RateLimit-Remaining": {
            "description": "The number of requests remaining in the time window.",
            "schema": {
              "type": "integer"
            }
          },
          "X-RateLimit-Reset": {
            "description": "The time at which the rate limit will reset.",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "500": {
        "description": "A 5xx error means there is either an issue with your self-hosted gateway, or a Transcend server is having issues. You check our system status at status.transcend.io. Please reach out to Transcend support if you're experiencing this error.",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "502": {
        "description": "An upstream service on Transcend's side is having issues. You check our system status at status.transcend.io. Please reach out to Transcend support if you're experiencing this error.",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      }
    },
    "parameters": [
      {
        "$ref": "#/components/parameters/authorization-optional"
      }
    ],
    "operationId": "get-public-keys-sombra-general-signing-key",
    "tags": [
      "Public keys"
    ],
    "description": "Fetch the public key, which you should use to validate incoming webhooks from Transcend. This value can be cached for 1 hour. Please refer to [this guide](/docs/dsr-automation/api-integration/receiving-a-webhook-from-transcend) for more information on how to verify webhooks with this public key.",
    "security": [
      {
        "Transcend_API_Key_If_Multitenant": []
      }
    ]
  }
}
```