RevKeen Docs
Api reference

AI-suggest product mappings

Call the RevKeen AI service to propose product-mapping candidates for unmapped external packages. Inputs: the unmapped package list plus the merchant's product catalogue. Output: a ranked list of suggested (external_id, revkeen_product_id, confidence) tuples. No state is written — the merchant must confirm and PUT the mapping set.


Related endpoints

  • POST /integrations/{provider}/activate — Activate integration
  • POST /integrations/{provider}/deactivate — Deactivate integration
  • GET /integrations/{provider} — Get integration status
  • POST /integrations/{provider}/test — Test integration credentials
  • POST /integrations/{provider}/sync — Trigger manual sync
  • GET /integrations — List all integrations
  • PUT /integrations/{provider}/status — Update integration status
  • PUT /integrations/{provider}/sync-toggle — Toggle integration sync

Common errors

  • 401 unauthenticated — missing, malformed, or revoked API key.

Idempotency

Pass an Idempotency-Key header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see the idempotency guide.

POST
/integrations/{provider}/suggest-mappings
x-api-key<token>

Your RevKeen API key (powered by Unkey). Get it from Dashboard > Settings > API Keys. Use rk_sandbox_* for test mode and rk_live_* for production.

In: header

Path Parameters

provider*string
Value in"practicehub" | "wodify" | "terminal"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://api.revkeen.com/v2/integrations/practicehub/suggest-mappings" \  -H "x-api-key: $REVKEEN_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "externalItems": [      {        "id": "string",        "name": "string",        "type": null,        "charge_type": null,        "price": null,        "source": "package"      }    ]  }'
{
  "success": true,
  "suggestions": [
    {
      "externalId": "string",
      "internalId": "string",
      "confidence": 0,
      "reasoning": "string"
    }
  ]
}
Empty