Kaedim
PlansEnterprise ConnectYouTube
  • Kaedim Documentation
  • Welcome
    • How Kaedim Works
    • Get Started
      • Quick Start
      • Sign-in
      • Showcase
      • Generation Examples
        • Prototype Asset Examples
        • Game-Ready Asset Examples
    • FAQ
  • Creating Assets
    • Overview
    • Input Guidelines
      • Input Image Examples
        • Furniture
        • Vehicles
        • Characters
        • Clothing
        • Accessories
        • Products
        • Structures
        • Stylised Trees
        • Scenes
    • Game-Ready Assets
      • Upload Base Model
      • Block Models
      • Stages of a Game-Ready Asset
    • Prototype Assets
      • Upgrade to Game-Ready
    • Upload a 3D Model
  • Reviewing Assets
    • 3D Viewer
      • Geometry Details
      • Enable Selection
      • Expand View
      • Show Rig
      • Show Dimensions
      • Show Wireframe
      • Show UV/Texture Maps
    • UV Viewer
    • Request Revisions
      • Request Revisions
      • Edit Asset Settings
      • Upgrade Quality
      • Revision Details
      • Upload Version (Game-Ready)
    • Branching
  • Managing Assets
    • Asset Status
    • Exporting Assets
      • Download
      • Share
  • Removing Assets
    • Cancel
    • Delete
  • Folders
  • Filters
  • Notifications
  • Enterprise Features
    • Custom Styles
    • Scene Functionality
    • Priority Level
    • Texel Density Inspector
    • Team Functionality
      • Inviting Team Members
      • Permissions & Roles
      • Setting Up a Studio
    • Custom Integrations
      • APIs
        • Web API
        • Web Hooks
      • Plugins
        • 🌎Omniverse
        • 🔲Unity
        • 🔶Blender
        • 🔷Unreal Engine
  • Admin
    • Settings
      • Billing
        • Invoices
        • Updating Payment Method
      • Notification Settings
      • Account Settings
  • Dev Logs
    • Releases
    • Upcoming Features
Powered by GitBook
On this page

Was this helpful?

  1. Enterprise Features
  2. Custom Integrations
  3. APIs

Web Hooks

Creating a webhook endpoint is the same as creating any other page on your website. It’s an HTTP or HTTPS endpoint on your server with a URL. Please ensure that your endpoint is HTTPS when setting it up.

Set up an HTTP endpoint on your server that can accept webhook requests with a POST method. For example, this URL route in Flask maps to a Python webhook function: How do I receive webhook data?

  1. Authenticate a user (Authentication Flow)

  2. Make sure your webhook URL is correct

🎉 That’s it!

Webhook Signing

Kaedim will, in all requests made to your webhook, include a header kaedim-signature, which will contain a hash value unique to the request and developer ID.

The signature secret - KAEDIM SECRET - can be found in user settings next to your developer ID and API-key and can be reset at any time.

Make sure to use utf-8 encoding for the payload, and to use HEX digest for the hashing function

Example of a Node.js signature verification:

const secret = "Api-Secret"; 
const payload = JSON.stringify(response.body);
console.log(response.body.result);
const devID = response.body.results.devID;
const signature = JSON.parse(response.headers["kaedim-signature"]);
/* {
  t : 1235678,
  v1:80e62bdd6bddf54905d3cd6e13940626e16aedd....
}*/
const checkSignature = crypto
  .createHmac("sha256", secret)
  .update(`${signature.t}${payload}`)
  .digest("hex");

if (
    crypto.timingSafeEqual(
      Buffer.from(signature.v1),
      Buffer.from(checkSignature)
    )
  ) {
    // Authenticity confirmed
    console.log("SUCCESS");
  } else {
    // Reject response
    console.log("FAIL");
  }

Your endpoint will receive requests. These will have a type that can be sculpt, generation, unwrap, texture, rig, or lod. It will also have a status that can be new, completed, approved, dismissed, or uploaded. There will also be two boolean flags isRevision and assetComplete.\

Example webhook request:

{
  results: {
    status: 'uploaded',
    userID: '94d... ',
    studioID: null,
    requestID: '927... ',
    iterationID: 2,
    name: '',
    image: 'https://... ',
    type: 'generation',
    isRevision: false,
    createdAt: '2025-02-22T05:49:57.000Z',
    completedAt: null,
    assetComplete: false,
    completedModels: {
      fbx: 'https://... ',
      glb: 'https://... ',
      mtl: 'https://... ',
      obj: 'https://... ',
      usd: 'https://... ',
      gltf: 'https://... ',
    },
    devID: '94d... '
  }
}
PreviousWeb APINextPlugins

Last updated 2 months ago

Was this helpful?