Privacy and analytics

We use necessary technical cookies and, only with your consent, analytics and marketing pixels to improve the website and measure campaigns.

Privacy policyCookie policy
Docs
English
EspañolEnglishFrançaisDeutschItalianoPortuguês

Getting started

  • What is Nömad?
  • Getting started with Nömad
  • Create your brand and complete the Genome
  • Invite your team
  • Glossary

Brand OS

  • What is inside Brand OS
  • What is the Genome?
  • Who is Nödo?
  • Messages: your team and Nödo
  • What does a Brand Manager do?
  • Brand Kit and Library
  • Posts and calendar
  • Connections
  • Meetings
  • Files we send you with NödoTransfer

Work

  • Work and tasks
  • Ordering work
  • Following, reviewing and approving deliveries
  • Approving the posts Nömad prepares
  • Custom quotes
  • Brand history
  • Yes, there are humans behind it

Account and billing

  • Plans and pricing
  • Billing and payments
  • People and access
  • Organization and brand roles
  • Workspaces and multiple brands
  • Your name and @username
  • Languages, apps and data
  • Leave, close or delete: account, brands and workspaces
  • Notifications: how we let you know
  • Push notifications on your phone and browser
  • Nömad emails and your preferences

Help

  • How to get help

API

  • Brand API
    • Errors
    • Permissions and roles
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    • Calendar
    • Connections
    • Publishing
    • Inbox
    • Team
    • Account and team
    • Conversation
    • Memory
    • Questions
    • Media
    • Store
    • Plan
    • Orders
    • Activity
    • Workspace
    • Your account
    • Billing
    • Website and domains

MCP

  • MCP server

Connectors

  • Brand connectors

Nödo and agents

  • Nödo in the brand

Genome

  • Genome specification
API/Brand API
Reference13 min read

Website and domains

Domains, DNS and the brand website.

On this page
  • site.domains.ideas · Domain ideas from Nödo
  • site.domains.contact_save · Save a domain holder
  • site.domains.contact_archive · Archive a domain holder
  • site.domains.purchase_start · Start buying a domain
Русский
한국어
日本語
中文
हिन्दी
Open the app
  • site.domains.transfer_quote · Quote a domain transfer
  • site.domains.transfer_start · Start a domain transfer
  • site.domains.renewal_start · Renew a domain
  • site.domains.restore_start · Restore an expired domain
  • site.domains.payment_start · Pay a domain order
  • site.domains.payment_confirm · Confirm a domain payment
  • site.domains.auto_renew_set · Set domain auto-renewal
  • site.domains.link · Link an existing domain
  • site.domains.dns_save · Save DNS records
  • site.domains.dns_preset · Apply a DNS preset
  • site.domains.nameservers_set · Set the nameservers
  • site.domains.lock_set · Set the transfer lock
  • site.domains.dns_undo · Undo the last DNS change
  • site.domains.auth_code_issue · Issue the transfer code
  • site.domains.verification_resend · Resend the holder verification
  • site.domains.transfer_resend · Resend the transfer approval
  • site.domains.task_choose · Choose the work's domain
  • site.domains.task_declare · Declare an existing domain
  • site.domains.task_order · Order the work's domain
  • site.domains.task_transfer · Transfer the work's domain
  • site.domains.task_link · Link the work's domain
  • site.domains.task_complete · Hand in the domain step
  • site.domains.ideas · Domain ideas from Nödo

    Proposes domain labels tied to the brand name and checks availability and price of each in the brand's extensions. exclude lists labels already shown. Reserves and buys nothing. needs_name means the brand has no name yet.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/site.domains.ideas
    MCP toolsite_domains_ideas
    Scopesite.read
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      exclude?: string[]  // ≤ 100 items · default []
    }

    Output

    {
      status: string
    }

    site.domains.contact_save · Save a domain holder

    Creates (without contactId) or edits a holder contact used to register or transfer domains. tld decides which fields the registry requires (.es asks for a tax id). Fails with invalid_input and detail invalid_contact; the screen shows the field errors returned in errors.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.contact_save
    MCP toolsite_domains_contact_save
    Scopesite.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      contactId?: string | null
      contact: {
        entityType: "person" | "company"
        firstName: string  // ≤ 200
        lastName: string  // ≤ 200
        organization?: string | null
        taxId?: string | null
        email: string  // ≤ 300
        phone: string  // ≤ 60
        address1: string  // ≤ 300
        address2?: string | null
        city: string  // ≤ 200
        state?: string | null
        postalCode: string  // ≤ 40
        country: string  // ≤ 60
      }
      tld?: string  // ≤ 200 · default "com"
      label?: string | null
      makeDefault?: boolean
    }

    Output

    {
      contact: {
        id: string
      }
      | null
      errors: Record<string, string> | null
    }

    site.domains.contact_archive · Archive a domain holder

    Stops offering one holder contact for new domains. Domains already registered with it keep it. Fails with not_found when it is not this brand's.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.contact_archive
    MCP toolsite_domains_contact_archive
    Scopesite.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      contactId: string  // ≤ 64 · Id of a saved holder contact (see the contacts of the domain screen).
    }

    Output

    {
      ok: true
    }

    site.domains.purchase_start · Start buying a domain

    Opens the registration order of a domain for the brand with a holder contact. The price is quoted again on the server; premium names need confirmPremium. Charges nothing yet: the order is paid afterwards by someone who pays for the brand. Never an agent's to start.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.purchase_start
    MCP toolsite_domains_purchase_start
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      domain: string  // ≤ 253 · Full domain name, e.g. `mybrand.com`.
      contactId: string  // ≤ 64 · Id of a saved holder contact (see the contacts of the domain screen).
      confirmPremium?: boolean
    }

    Output

    {
      domainOrderId: string
      brandDomainId: string
      order: {
        id: string
        kind: string
        status: string
      }  // A domain order as the brand sees it: kind, status and what is still due.
    }

    site.domains.transfer_quote · Quote a domain transfer

    Tells whether a domain held at another registrar can be transferred to Nömad, whether it needs the authorization code, whether it adds a year and what it costs. Changes nothing.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/site.domains.transfer_quote
    MCP toolsite_domains_transfer_quote
    Scopesite.read
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      domain: string  // ≤ 253 · Full domain name, e.g. `mybrand.com`.
    }

    Output

    {
      domain: string
      transferable: boolean
    }

    site.domains.transfer_start · Start a domain transfer

    Opens the order that brings a domain from another registrar, with its authorization code and holder. It is paid first and transferred afterwards. Never an agent's to start.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.transfer_start
    MCP toolsite_domains_transfer_start
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      domain: string  // ≤ 253 · Full domain name, e.g. `mybrand.com`.
      authCode?: string | null
      contactId: string  // ≤ 64 · Id of a saved holder contact (see the contacts of the domain screen).
      confirmPremium?: boolean
    }

    Output

    {
      domainOrderId: string
      brandDomainId: string
      order: {
        id: string
        kind: string
        status: string
      }  // A domain order as the brand sees it: kind, status and what is still due.
    }

    site.domains.renewal_start · Renew a domain

    Opens the renewal order of one of the brand's domains. It is charged when the order is paid. Never an agent's to start.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.renewal_start
    MCP toolsite_domains_renewal_start
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
    }

    Output

    {
      domainOrderId: string
      brandDomainId: string
      order: {
        id: string
        kind: string
        status: string
      }  // A domain order as the brand sees it: kind, status and what is still due.
    }

    site.domains.restore_start · Restore an expired domain

    Opens the order that restores a domain in its redemption period. It is charged when the order is paid. Never an agent's to start.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.restore_start
    MCP toolsite_domains_restore_start
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
    }

    Output

    {
      domainOrderId: string
      brandDomainId: string
      order: {
        id: string
        kind: string
        status: string
      }  // A domain order as the brand sees it: kind, status and what is still due.
    }

    site.domains.payment_start · Pay a domain order

    Prepares the card payment of a domain order (Stripe PaymentIntent) and returns its client secret for the payment form. Only people who pay for the brand, never staff and never an agent. paid is true when nothing is left to pay.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.payment_start
    MCP toolsite_domains_payment_start
    Scopesite.write
    Minimum roleBilling
    Human confirmationYes
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      domainOrderId: string  // ≤ 64
    }

    Output

    {
      order: {
        id: string
        kind: string
        status: string
      }  // A domain order as the brand sees it: kind, status and what is still due.
      clientSecret: string | null
      publishableKey: string
      paid: boolean
    }

    site.domains.payment_confirm · Confirm a domain payment

    After the payment form confirms, reads the payment again from Stripe and registers the paid domain right away. Returns the order as it stands.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.payment_confirm
    MCP toolsite_domains_payment_confirm
    Scopesite.write
    Minimum roleBilling
    Human confirmationNo
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      domainOrderId: string  // ≤ 64
    }

    Output

    {
      id: string
      kind: string
      status: string
    }

    site.domains.auto_renew_set · Set domain auto-renewal

    Turns automatic renewal of one active or expired domain on or off. With it on, the renewal is charged each year. Fails with domain_not_renewable for other states.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.auto_renew_set
    MCP toolsite_domains_auto_renew_set
    Scopesite.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
      autoRenew: boolean
    }

    Output

    {
      autoRenew: boolean
    }

    site.domains.link · Link an existing domain

    Links a domain registered elsewhere to the brand, at no charge, and returns the DNS records to set at that registrar (connection). already_yours and held_elsewhere explain a refusal.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.link
    MCP toolsite_domains_link
    Scopesite.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      domain: string  // ≤ 253 · Full domain name, e.g. `mybrand.com`.
      registrar?: string | null
    }

    Output

    {
      brandDomainId: string
      connection: {
        domain: string
        status: string
      }  // How a domain registered elsewhere is pointed at Nömad: the records to set and the ones still missing.
    }

    site.domains.dns_save · Save DNS records

    Replaces the editable DNS records of a domain whose zone Nömad manages with records (type, name, value, ttl, priority…). Each change is kept and can be undone with site.domains.dns_undo. Invalid records come back per index.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.dns_save
    MCP toolsite_domains_dns_save
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
      records: unknown[]  // ≤ 1000 items
    }

    Output

    {
      ok: boolean
    }

    site.domains.dns_preset · Apply a DNS preset

    Adds the records of one preset (an email provider, a site host, a verification) to the domain's zone. Can be undone with site.domains.dns_undo. preset_unavailable for an unknown preset.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.dns_preset
    MCP toolsite_domains_dns_preset
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
      preset: string  // ≤ 60
    }

    Output

    {
      ok: boolean
    }

    site.domains.nameservers_set · Set the nameservers

    Points a registered domain back at Nömad's nameservers (default) or delegates it to other ones (custom, up to 13). With custom nameservers Nömad no longer answers its DNS.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.nameservers_set
    MCP toolsite_domains_nameservers_set
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
      mode: "default" | "custom"
      nameservers?: string[]  // ≤ 50 items · default []
    }

    Output

    {
      ok: true
    }

    site.domains.lock_set · Set the transfer lock

    Turns on or off the registrar lock that prevents the domain from being transferred away. lock_not_supported when the extension has no lock.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.lock_set
    MCP toolsite_domains_lock_set
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
      locked: boolean
    }

    Output

    {
      ok: true
    }

    site.domains.dns_undo · Undo the last DNS change

    Puts the zone back as it was before one saved change (changeId, the latest). undo_unavailable when that change can no longer be undone.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.dns_undo
    MCP toolsite_domains_dns_undo
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
      changeId: string  // ≤ 64
    }

    Output

    {
      ok: boolean
    }

    site.domains.auth_code_issue · Issue the transfer code

    Issues the authorization code that moves the domain to another registrar. Only the owner of the brand (or staff managing it), after a sign-in that just happened; shown once and never stored. Never an agent's.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.auth_code_issue
    MCP toolsite_domains_auth_code_issue
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
    }

    Output

    {
      authCode: string
      locked: boolean | null
    }

    site.domains.verification_resend · Resend the holder verification

    Sends the holder the registry's verification email again. Only while the registry still waits for it.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.verification_resend
    MCP toolsite_domains_verification_resend
    Scopesite.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
    }

    Output

    {
      ok: true
    }

    site.domains.transfer_resend · Resend the transfer approval

    Sends again the email the holder uses to approve the transfer in progress. Only while the transfer waits for that approval.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.transfer_resend
    MCP toolsite_domains_transfer_resend
    Scopesite.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      brandDomainId: string  // ≤ 64 · Id of the brand domain (`brand_domains.id`).
    }

    Output

    {
      ok: true
    }

    site.domains.task_choose · Choose the work's domain

    First version of the «Elige tu dominio» step: records the chosen domain with the price quoted now and hands the step in. Charges and registers nothing. taken, confirm_premium, already_yours, held_elsewhere and done explain a refusal.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.task_choose
    MCP toolsite_domains_task_choose
    Scopesite.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // ≤ 64 · Id of the work's «Elige tu dominio» step.
      domain: string  // ≤ 253
      confirmPremium?: boolean
    }

    Output

    {
      ok: true
    }

    site.domains.task_declare · Declare an existing domain

    First version of «Ya tengo dominio»: records the domain the brand already has, where it is registered and how the team reaches it, and hands the step in. Charges nothing.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.task_declare
    MCP toolsite_domains_task_declare
    Scopesite.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // ≤ 64 · Id of the work's «Elige tu dominio» step.
      domain: string  // ≤ 253
      registrar?: string  // ≤ 200 · default ""
      access?: string  // ≤ 2000 · default ""
    }

    Output

    {
      ok: true
    }

    site.domains.task_order · Order the work's domain

    Opens the registration order inside the work's domain step: the order carries the work, so the contract's «Dominio» extra is credited. Needs a named brand (needs_name); catalogue test runs never order (test_run). Never an agent's to start.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.task_order
    MCP toolsite_domains_task_order
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // ≤ 64 · Id of the work's «Elige tu dominio» step.
      domain: string  // ≤ 253
      contactId: string  // ≤ 64 · Id of a saved holder contact (see the contacts of the domain screen).
      confirmPremium?: boolean
    }

    Output

    {
      domainOrderId: string
      brandDomainId: string
      order: {
        id: string
        kind: string
        status: string
      }  // A domain order as the brand sees it: kind, status and what is still due.
    }

    site.domains.task_transfer · Transfer the work's domain

    Opens the transfer order inside the work's domain step; the order carries the work (pay first, then transfer). Catalogue test runs never transfer (test_run). Never an agent's to start.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.task_transfer
    MCP toolsite_domains_task_transfer
    Scopesite.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // ≤ 64 · Id of the work's «Elige tu dominio» step.
      domain: string  // ≤ 253
      authCode?: string | null
      contactId: string  // ≤ 64 · Id of a saved holder contact (see the contacts of the domain screen).
      confirmPremium?: boolean
    }

    Output

    {
      domainOrderId: string
      brandDomainId: string
      order: {
        id: string
        kind: string
        status: string
      }  // A domain order as the brand sees it: kind, status and what is still due.
    }

    site.domains.task_link · Link the work's domain

    Links a domain registered elsewhere inside the work's domain step, at no charge, and hands the step in with the DNS records to set.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.task_link
    MCP toolsite_domains_task_link
    Scopesite.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // ≤ 64 · Id of the work's «Elige tu dominio» step.
      domain: string  // ≤ 253
      registrar?: string | null
    }

    Output

    {
      brandDomainId: string
    }

    site.domains.task_complete · Hand in the domain step

    Hands the «Elige tu dominio» step in once nothing is left for the brand: the order is paid or covered by the contract. payment_pending while it is not.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/site.domains.task_complete
    MCP toolsite_domains_task_complete
    Scopesite.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // ≤ 64 · Id of the work's «Elige tu dominio» step.
    }

    Output

    {
      ok: true
    }

    Updated on January 1, 1970

    PreviousBillingNextMCP server

    In this section

    • Errors
    • Permissions and roles
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    • Calendar
    Can't find what you need? Write to usWrite to usGo to the app
    © 2026 Nömad · Nömad documentationLinkedInInstagramThreadsFacebookTikTokYouTubeX
    Go to nomad.oooBack to top

    On this page

    • site.domains.ideas · Domain ideas from Nödo
    • site.domains.contact_save · Save a domain holder
    • site.domains.contact_archive · Archive a domain holder
    • site.domains.purchase_start · Start buying a domain
    • site.domains.transfer_quote · Quote a domain transfer
    • site.domains.transfer_start · Start a domain transfer
    • site.domains.renewal_start · Renew a domain
    • site.domains.restore_start · Restore an expired domain
    • site.domains.payment_start · Pay a domain order
    • site.domains.payment_confirm · Confirm a domain payment
    • site.domains.auto_renew_set · Set domain auto-renewal
    • site.domains.link · Link an existing domain
    • site.domains.dns_save · Save DNS records
    • site.domains.dns_preset · Apply a DNS preset
    • site.domains.nameservers_set · Set the nameservers
    • site.domains.lock_set · Set the transfer lock
    • site.domains.dns_undo · Undo the last DNS change
    • site.domains.auth_code_issue · Issue the transfer code
    • site.domains.verification_resend · Resend the holder verification
    • site.domains.transfer_resend · Resend the transfer approval
    • site.domains.task_choose · Choose the work's domain
    • site.domains.task_declare · Declare an existing domain
    • site.domains.task_order · Order the work's domain
    • site.domains.task_transfer · Transfer the work's domain
    • site.domains.task_link · Link the work's domain
    • site.domains.task_complete · Hand in the domain step