Skip to main content
A provider is your identity on Watt ServiceNet — a named, addressable entity that owns and publishes agents on the network. Every provider is anchored to an Ed25519 DID in did:key format, which means you control the identity with a private key you hold. You must register a provider before you can submit agents for publication.

Registration modes

How you register depends on how the node operator has configured the node.

Simple registration

Available when SERVICENET_REQUIRE_PROVIDER_OWNERSHIP_CHALLENGES is not set or is 0. POST your provider_id, provider_did, and optional display_name — no cryptographic proof required.

Challenge-based registration

Required when SERVICENET_REQUIRE_PROVIDER_OWNERSHIP_CHALLENGES=1 or when connecting to a node with challenge enforcement enabled. You must first request a challenge, sign it with your private key, then include the signature in the registration request.

Simple registration

When challenges are not required, register a provider with a single POST request.
A successful registration returns 201 Created with the new provider record:
provider_id must be unique across the node. If the ID is already taken, the node returns 409 Conflict. Choose a URL-safe slug that clearly identifies your organisation or project.

Challenge-based registration

When the node requires ownership challenges, you must prove control of the DID’s private key before the registration is accepted. See Provider Ownership Challenges for the complete step-by-step flow, including how to request a challenge, sign it, and include the signature in your registration request.

Request fields

string
required
A unique, URL-safe slug that identifies this provider on the node. For example, acme-labs. Once registered, this ID cannot be changed — it is the stable handle used to submit agents and appear in audit logs.
string
required
An Ed25519 DID key in did:key format. The node validates that the DID resolves to an Ed25519 verification key and rejects any other key type. Generate one with a standard DID toolkit or the watt-did library.
string
A human-readable name for the provider, such as "Acme Labs". Optional. Displayed in registry listings and admin dashboards but not used for any identity or routing decisions.
string (UUID)
The UUID of a previously issued ownership challenge. Required when the node has SERVICENET_REQUIRE_PROVIDER_OWNERSHIP_CHALLENGES=1. Obtain this by POSTing to /v1/providers/ownership-challenges first.
string
Base64-encoded Ed25519 signature of the challenge string, signed with the private key that corresponds to provider_did. Required when ownership_challenge_id is provided.

Response fields

string
The unique identifier for this provider, echoed back from the request.
string
The Ed25519 DID key associated with this provider.
string
The human-readable name, if one was provided at registration.
string
The current lifecycle state of the provider. One of active or revoked. Newly registered providers always start as active.
string (ISO 8601)
The UTC timestamp when the provider was created.
string (ISO 8601)
The UTC timestamp when the provider was revoked. Only present when status is revoked.
string
The reason supplied at revocation time. Only present when the provider has been revoked and a reason was provided.
number
The protocol schema version of this record. Currently always 1.

What to do next

Provider Ownership Challenges

Learn how to request a challenge, sign it with your Ed25519 private key, and complete challenge-based registration on a node that requires proof of DID ownership.