Skip to main content
type
enum<string>
required
Enum options: ACTIVITY_TYPE_CREATE_WEBHOOK_ENDPOINT
timestampMs
string
required
Timestamp (in milliseconds) of the request, used to verify liveness of user requests.
organizationId
string
required
Unique identifier for a given Organization.
parameters
object
required

The parameters object containing the specific intent data for this activity.

generateAppProofs
boolean
Enable to have your activity generate and return App Proofs, enabling verifiability.
A successful response returns the following fields:
activity
object
required
The activity object containing type, intent, and result
curl --request POST \
  --url https://api.turnkey.com/public/v1/submit/create_webhook_endpoint \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header "X-Stamp: <string> (see Authorizations)" \
  --data '{
    "type": "ACTIVITY_TYPE_CREATE_WEBHOOK_ENDPOINT",
    "timestampMs": "<string> (e.g. 1746736509954)",
    "organizationId": "<string> (Your Organization ID)",
    "parameters": {
        "url": "<string>",
        "name": "<string>",
        "subscriptions": [
            {
                "eventType": "<string>",
                "filtersJson": "<string>",
                "isActive": "<boolean>"
            }
        ]
    }
}'
import { Turnkey } from "@turnkey/sdk-server";

const turnkeyClient = new Turnkey({
  apiBaseUrl: "https://api.turnkey.com",
  apiPublicKey: process.env.API_PUBLIC_KEY!,
  apiPrivateKey: process.env.API_PRIVATE_KEY!,
  defaultOrganizationId: process.env.ORGANIZATION_ID!,
});

const response = await turnkeyClient.apiClient().createWebhookEndpoint({
  url: "<string> (The destination URL for webhook delivery.)",
  name: "<string> (Human-readable name for this webhook endpoint.)",
  subscriptions: [{ // Event subscriptions to create for this endpoint.,
    eventType: "<string> (The event type to subscribe to (for example, ACTIVITY_UPDATES or BALANCE_CONFIRMED_UPDATES).)",
    filtersJson: "<string> (JSON-encoded filter criteria for this subscription.)",
    isActive: true // Whether this subscription is active.,
  }]
});
{
  "activity": {
    "id": "<activity-id>",
    "status": "ACTIVITY_STATUS_COMPLETED",
    "type": "ACTIVITY_TYPE_CREATE_WEBHOOK_ENDPOINT",
    "organizationId": "<organization-id>",
    "timestampMs": "<timestamp> (e.g. 1746736509954)",
    "result": {
      "activity": {
        "id": "<string>",
        "organizationId": "<string>",
        "status": "<string>",
        "type": "<string>",
        "intent": {
          "createWebhookEndpointIntent": {
            "url": "<string>",
            "name": "<string>",
            "subscriptions": [
              {
                "eventType": "<string>",
                "filtersJson": "<string>",
                "isActive": "<boolean>"
              }
            ]
          }
        },
        "result": {
          "createWebhookEndpointResult": {
            "endpointId": "<string>",
            "webhookEndpoint": {
              "endpointId": "<string>",
              "organizationId": "<string>",
              "url": "<string>",
              "name": "<string>",
              "isActive": "<boolean>",
              "subscriptions": [
                {
                  "eventType": "<string>",
                  "filtersJson": "<string>",
                  "isActive": "<boolean>"
                }
              ]
            }
          }
        },
        "votes": "<array>",
        "fingerprint": "<string>",
        "canApprove": "<boolean>",
        "canReject": "<boolean>",
        "createdAt": "<string>",
        "updatedAt": "<string>"
      }
    }
  }
}