---
title: "POST /v2/parties/external/allocate"
method: POST
path: "/v2/parties/external/allocate"
---

# POST /v2/parties/external/allocate

`POST /v2/parties/external/allocate`

The external party must be hosted (at least) on this node with either confirmation or observation permissions
It can optionally be hosted on other nodes (then called a multi-hosted party).
If hosted on additional nodes, explicit authorization of the hosting relationship must be performed on those nodes
before the party can be used.
Decentralized namespaces are supported but must be provided fully authorized by their owners.
The individual owner namespace transactions can be submitted in the same call (fully authorized as well).
In the simple case of a non-multi hosted, non-decentralized party, the RPC will return once the party is
effectively allocated and ready to use, similarly to the AllocateParty behavior.
For more complex scenarios applications may need to query the party status explicitly (only through the admin API as of now).

## Request body

- AllocateExternalPartyRequest — Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id) OR IsAuthenticatedUser(user_id)``
  - `synchronizer` string, required — Synchronizer ID on which to onboard the party Required
  - `onboardingTransactions` SignedTransaction[], required — TopologyTransactions to onboard the external party Can contain: - A namespace for the party. This can be either a single NamespaceDelegation, or DecentralizedNamespaceDefinition along with its authorized namespace owners in the form of NamespaceDelegations. May be provided, if so it must be fully authorized by the signatures in this request combined with the existing topology state. - A PartyToParticipant to register the hosting relationship of the party, and the party's signing keys and threshold. Must be provided. Required: must be non-empty
    - `transaction` string, required — The serialized TopologyTransaction Required: must be non-empty
    - `signatures` Signature[] — Additional signatures for this transaction specifically Use for transactions that require additional signatures beyond the namespace key signatures e.g: PartyToParticipant must be signed by all registered keys Optional: can be empty
      - `format` string, required — Required
      - `signature` string, required — Required: must be non-empty
      - `signedBy` string, required — The fingerprint/id of the keypair used to create this signature and needed to verify. Required
      - `signingAlgorithmSpec` string, required — The signing algorithm specification used to produce this signature Required
  - `multiHashSignatures` Signature[] — Optional signatures of the combined hash of all onboarding_transactions This may be used instead of providing signatures on each individual transaction Optional: can be empty
    - `format` string, required — Required
    - `signature` string, required — Required: must be non-empty
    - `signedBy` string, required — The fingerprint/id of the keypair used to create this signature and needed to verify. Required
    - `signingAlgorithmSpec` string, required — The signing algorithm specification used to produce this signature Required
  - `identityProviderId` string — The id of the ``Identity Provider`` If not set, assume the party is managed by the default identity provider. Optional
  - `waitForAllocation` boolean — When true, this RPC will attempt to wait for the party to be allocated on the synchronizer before returning. When false, the allocation will happen asynchronously. This is a best effort only as this synchronization is only possible for non decentralized parties (single hosting node). For decentralized parties, this flag is ignored. Defaults to true. Optional
  - `userId` string — The user who will get the act_as rights to the newly allocated party. If set to an empty string (the default), no user will get rights to the party. Optional

## Response `200`

- AllocateExternalPartyResponse
  - `partyId` string, required — The allocated party id Required

## Other responses

- `400` — Invalid value, Invalid value for: body
- `default`

---

[API](https://skmtc.dev/canton/apis/json-ledger-api-http-endpoints.md) · [All operations](https://skmtc.dev/canton/apis/json-ledger-api-http-endpoints/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/canton/json-ledger-api-http-endpoints/revisions/296292e8b8f1/schema)
