Prices and validates the requested domains, ensures a registrant contact for the authenticated user, and returns a hosted checkout URL. Call this proxied through the user's PDS (atproto-proxy: did:web:marque.at#marque_registrar) with a token holding the at.marque.partnerApi permission set: the authenticated user (the JWT iss) becomes the owner of the domains and is billed by the selected payment provider. The owning DID is taken from that authenticated session, never from input. The end user completes payment on the provider's hosted page and is redirected to successUrl with an order query parameter (successUrl?order=<orderId>) on success, or to cancelUrl if they abandon. Domains are not registered until payment is confirmed; poll at.marque.partner.getOrder with the returned orderId for provisioning status, then write the at.marque.domain and at.marque.dns records into the user's repository yourself. Only new registrations are supported here (no transfers or renewals).
Input
application/jsoncancelUrl
stringuri
Required
Where the payment provider redirects if the user cancels.
items
array
Required
Domains to register in this order, 1 to 50. Every domain must currently be available (verify with checkAvailability first); if any is unavailable or on an unsupported TLD the whole call fails.
maxLength: 50 itemsminLength: 1 itemspaymentMethod
string
Optional
Hosted payment provider. Defaults to stripe when omitted. Use paypal for PayPal checkout or nowpayments for cryptocurrency checkout.
registrant
ref#registrant
Required
No description available.
successUrl
stringuri
Required
Where the payment provider redirects after successful payment. An order parameter carrying the order id is appended.
Output
application/jsoncheckoutUrl
stringuri
Required
Hosted checkout URL from the selected payment provider.
currency
string
Required
ISO 4217 currency code of subtotalCents. Currently always usd.
orderId
string
Required
Opaque order id; pass to getOrder to poll status.
paymentMethod
string
Required
Payment provider selected for this order.
stripe, paypal, nowpaymentssubtotalCents
integer
Required
Order subtotal in cents, before provider-specific tax or conversion adjustments. The amount shown on the hosted page may be higher.
taxCents
integer
Optional
Tax charged in cents. Zero when tax is calculated by the hosted provider.
totalCents
integer
Optional
Checkout total in cents, including tax known when the checkout is created.
Errors
InvalidRequest
The request is malformed: no items, too many items (max 50), or an item with an invalid domain. Unavailable
A requested domain cannot be registered: it is taken, on an unsupported TLD, or could not be verified with the registry. The message identifies the domain. InvalidRegistrant
The registrant is missing a required field (including state/province where the country requires it) or is missing an extra field a specific TLD mandates. The message names what is missing. InvalidCallback
successUrl or cancelUrl is not a valid absolute https URL. InvalidPaymentMethod
paymentMethod is not stripe, paypal, or nowpayments. PaymentMethodUnavailable
The selected payment provider is not configured. PaymentAmountTooLow
NOWPayments was selected but the order total is below the configured crypto minimum. PaymentProviderError
The selected payment provider could not create a hosted checkout. Try It
Requests are sent directly from your browser. Some servers may block requests due to CORS.
View raw schema
{
"type": "procedure",
"input": {
"schema": {
"type": "object",
"required": [
"items",
"registrant",
"successUrl",
"cancelUrl"
],
"properties": {
"items": {
"type": "array",
"items": {
"ref": "#item",
"type": "ref"
},
"maxLength": 50,
"minLength": 1,
"description": "Domains to register in this order, 1 to 50. Every domain must currently be available (verify with checkAvailability first); if any is unavailable or on an unsupported TLD the whole call fails."
},
"cancelUrl": {
"type": "string",
"format": "uri",
"description": "Where the payment provider redirects if the user cancels."
},
"registrant": {
"ref": "#registrant",
"type": "ref"
},
"successUrl": {
"type": "string",
"format": "uri",
"description": "Where the payment provider redirects after successful payment. An order parameter carrying the order id is appended."
},
"paymentMethod": {
"type": "string",
"description": "Hosted payment provider. Defaults to stripe when omitted. Use paypal for PayPal checkout or nowpayments for cryptocurrency checkout.",
"knownValues": [
"stripe",
"paypal",
"nowpayments"
]
}
}
},
"encoding": "application/json"
},
"errors": [
{
"name": "InvalidRequest",
"description": "The request is malformed: no items, too many items (max 50), or an item with an invalid domain."
},
{
"name": "Unavailable",
"description": "A requested domain cannot be registered: it is taken, on an unsupported TLD, or could not be verified with the registry. The message identifies the domain."
},
{
"name": "InvalidRegistrant",
"description": "The registrant is missing a required field (including state/province where the country requires it) or is missing an extra field a specific TLD mandates. The message names what is missing."
},
{
"name": "InvalidCallback",
"description": "successUrl or cancelUrl is not a valid absolute https URL."
},
{
"name": "InvalidPaymentMethod",
"description": "paymentMethod is not stripe, paypal, or nowpayments."
},
{
"name": "PaymentMethodUnavailable",
"description": "The selected payment provider is not configured."
},
{
"name": "PaymentAmountTooLow",
"description": "NOWPayments was selected but the order total is below the configured crypto minimum."
},
{
"name": "PaymentProviderError",
"description": "The selected payment provider could not create a hosted checkout."
}
],
"output": {
"schema": {
"type": "object",
"required": [
"orderId",
"checkoutUrl",
"subtotalCents",
"currency",
"paymentMethod"
],
"properties": {
"orderId": {
"type": "string",
"description": "Opaque order id; pass to getOrder to poll status."
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code of subtotalCents. Currently always usd."
},
"taxCents": {
"type": "integer",
"description": "Tax charged in cents. Zero when tax is calculated by the hosted provider."
},
"totalCents": {
"type": "integer",
"description": "Checkout total in cents, including tax known when the checkout is created."
},
"checkoutUrl": {
"type": "string",
"format": "uri",
"description": "Hosted checkout URL from the selected payment provider."
},
"paymentMethod": {
"type": "string",
"description": "Payment provider selected for this order.",
"knownValues": [
"stripe",
"paypal",
"nowpayments"
]
},
"subtotalCents": {
"type": "integer",
"description": "Order subtotal in cents, before provider-specific tax or conversion adjustments. The amount shown on the hosted page may be higher."
}
}
},
"encoding": "application/json"
},
"description": "Prices and validates the requested domains, ensures a registrant contact for the authenticated user, and returns a hosted checkout URL. Call this proxied through the user's PDS (atproto-proxy: did:web:marque.at#marque_registrar) with a token holding the at.marque.partnerApi permission set: the authenticated user (the JWT iss) becomes the owner of the domains and is billed by the selected payment provider. The owning DID is taken from that authenticated session, never from input. The end user completes payment on the provider's hosted page and is redirected to successUrl with an order query parameter (successUrl?order=<orderId>) on success, or to cancelUrl if they abandon. Domains are not registered until payment is confirmed; poll at.marque.partner.getOrder with the returned orderId for provisioning status, then write the at.marque.domain and at.marque.dns records into the user's repository yourself. Only new registrations are supported here (no transfers or renewals)."
}