ExchainDocs
DocsAPI

APIPartnersCreate a sign-up link

Create a sign-up link

Signed 30-day console sign-up link for a node operator.

POST
/v1/partner/signup-links

Mint a signed console sign-up link for one of your node operators. It is valid 30 days; a node created through it is attributed to you. returnUrl must be on one of your allowed embedding origins.

Authorization

partnerKey
headerAuthorizationBearer <token>

Partner key delivered by a one-time link. Works on /v1/partner/* only.

Request Body

application/json
  1. body
nodeId*string

The node id the operator will sign up with.

Match^[A-Za-z0-9._:-]{1,128}$
returnUrl?string

Where the console sends the operator afterwards. Must be on an allowed origin.

Lengthlength <= 2048

Response Body

Created.

application/json
  1. response
url*string
expiresAt*DateTime
Formatdate-time
asOf*string
Match^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z$
Formatdate-time
schemaVersion*string

Wire schema version, "1.1" today.

Value in"1.0""1.1"
chainTip*|null
Example Request
curl -X POST 'https://cosign.exchain.network/v1/partner/signup-links' \  -H 'Content-Type: application/json' \  -d '{  "nodeId": "acme-node-3",  "returnUrl": "https://admin.acme.example/onboarding"}'
Example Response
{  "url": "https://cosign.exchain.network/console/signup?node=acme-node-3&partner=acme-platform&exp=1794932527&sig=gTVIHbS0wNyvjX6ss4kF7C7lr1Poz5AcyKCLKro-nQc&return=https%3A%2F%2Fadmin.acme.example%2Fonboarding",  "expiresAt": "2026-12-05T14:22:07Z",  "asOf": "2026-11-05T14:22:07.318Z",  "schemaVersion": "1.1",  "chainTip": null}

Errors

StatusCodeMeaning
400bad_requestnodeId is malformed, or returnUrl is not on an allowed origin.
401unauthorizedA partner key is required: the bearer is missing, unknown, reset or revoked.
413payload_too_largeThe request body is larger than 64 KiB.
429rate_limitedOver the limit; retry after Retry-After seconds (also in retryAfterSec).

Every code and what to do about it: Errors and codes.