Creating a proposal locks a bond from the user’s wallet, sized at
proposalBondBps of supply, which is reclaimed with bonds/withdraw after settlement.
Only one proposal can be active per governance at a time, and a second returns active_proposal_exists.
Shared Fields
POST /partner/v1/governance/proposals/update-content
Proposes a change to token metadata. This is the only multipart endpoint in the Partner API, because it can carry a new image. Content type:multipart/form-data
Send only the fields you want to change, since omitted fields are left alone and an empty string clears a text field.
There are two distinct empty-change errors and they are not interchangeable. Sending no patch fields at all fails fast with
400 invalid_input, whereas sending fields whose values match what is already on-chain reaches the builder and fails with no_metadata_changes.metadataUri and imageUri for the newly pinned content.
POST /partner/v1/governance/proposals/extend-mutability
Proposes extending the window during which metadata can still be changed.
A governance can only be extended once, and a second attempt returns
mutability_already_extended. Extensions are also capped, so an over-long request returns mutability_extension_exceeds_cap.
POST /partner/v1/governance/proposals/finalize-metadata
Proposes locking metadata permanently. Once metadata is finalized, no further content proposals are possible for that token.POST /partner/v1/governance/metadata/finalize-expired
Finalizes metadata whose mutability window has already lapsed. This is housekeeping rather than a governance decision, since it records on-chain what is already true.This endpoint accepts
voteDurationSeconds for schema consistency but ignores it, since there is nothing to vote on.metadata_still_mutable.
POST /partner/v1/governance/bonds/withdraw
Reclaims the bond locked when creating a proposal, after settlement.
Returns
no_proposal_bond if the proposal never had one, and proposal_bond_already_withdrawn if it was already reclaimed.
Response
metadataUri and imageUri fields appear only on update-content, and other identifiers are present where they apply.