Skip to main content
This walkthrough uses the REST API to create a private module, publish its first version, install it, issue an ingest credential, and send a signed event. You need an authenticated partner admin session. See Admin session tokens for how to obtain one and the Quickstart for the credential roles. Keep the session token and all raw credentials on your server. An org_ key is a service identity for partner reads; it cannot publish a module or issue credentials. Keep the admin session for module authoring, then mint the org_ key after the module is published and installed.

1. Create a private module draft

Create the module with the admin session. The server assigns the authenticated organization as owner_organization_id; the request does not accept an owner field. Partner admins create third_party modules. A request for in_house or proprietary returns 403.
Private modules are visible and installable only to their owning organization. Modules without an owner are platform or vendor modules visible to every organization. A slug only has to be unique inside your organization, so pick the one that reads best to your team without checking what anyone else uses. The one case that answers 409 is a slug a platform or vendor module already holds, or one you already used yourself.

2. Create a version with its manifest

The manifest declares the module’s native event type, the platform canonical event type it maps to, the native payload schema, and the projection.

3. Publish the version

Publish with the admin session, not the org_ key:
The manifest is checked against the platform module contract at publish time. Native event types are the module’s to declare, while canonical event types are owned by the platform. If the manifest does not fit the contract, the request returns 422 and the version stays in draft.

4. Install the published version

Install the version for the owning organization with the admin session:
The installation pins the version whose manifest the ingest receptor uses.

5. Issue an organization API key

Now issue an org_ key from the partner admin session for a service that needs partner reads. The raw_key is returned only in this response, so save it before continuing.
GET /v1/api-keys returns masked metadata only. If the raw key is lost, revoke it and issue a replacement. An organization can have at most 10 enabled keys.

6. Issue an ingest credential

Issue a module credential for the installation. This credential is separate from the organization API key and is accepted only by POST /v1/ingest.
Save the raw_key as the module credential. It is shown once and is not returned by the credential list endpoint.

7. Sign and send an event

The signature is HMAC-SHA256 over the exact raw body prefixed with the Unix timestamp and a period. The body sent by curl must be byte-for-byte identical to the body used to compute the signature.
The receptor returns 202 Accepted with the durable outcome:
The event’s native type and payload must match the installed manifest. The receptor validates the native payload, applies the declared projection, and validates the resulting platform canonical payload before emitting it.

What to remember

  • Use an admin session to create, version, publish, install, and issue credentials.
  • Use an org_ key for server-side partner reads. Key management, like module authoring, needs the admin session.
  • Use an mk_live_ module credential, the HMAC signature, and the matching Idempotency-Key for POST /v1/ingest.
  • A private module is visible and installable only to its owning organization.