Norn API· Brands

Norn APIThe API

Preview

Brands

A brand is who Norn suggests ideas for. Create one from a website, check what Norn read, and correct anything it got wrong.

Every idea is for a brand. A brand holds what Norn knows about one business or person: what it does, who it is for, how it sounds and what it must never say. Feedback is kept per brand too, so each brand builds up its own taste.

If you serve many businesses, such as an agency with clients or a platform with customers, create one brand for each of them.

What Norn reads from a website

#

Give Norn a website and it reads the pages it can reach: what the business offers, its products, what customers say about it and how it talks. From that it writes a short description, lists the offerings and suggests an archetype. Ideas later cite these pages as their sources.

Norn reads the site when you create the brand. Change website in an update to make it read again, for example after a relaunch.

The archetype

#

Norn describes a brand’s personality as one of twelve archetypes, drawn from Carl Jung and set out for brands by Margaret Mark and Carol Pearson. The archetype sets the brand’s voice, and the voice decides which angles an idea can take. A jester can joke about a burst pipe. A sage explains why pipes burst.

ArchetypeSounds
innocentSimple, honest and hopeful.
everymanDown to earth. One of us.
heroBrave and determined. Proves itself.
outlawBreaks the rules. Says what others will not.
explorerCurious and free. Looks for what is new.
creatorInventive. Cares about craft.
rulerIn control. Sets the standard.
magicianTransforms things. Makes the hard look easy.
loverWarm and close. About beauty and feeling.
caregiverKind and protective. Looks after people.
jesterPlayful and funny. Never takes itself too seriously.
sageWise. Explains, and is trusted for it.

If you know the archetype, set it. If you leave it out, Norn suggests one and explains its choice in archetype.rationale. Read the rationale once: a brand with the wrong voice gets the wrong ideas.

Create a brand

#
POST/v1/brandsPreview

Body

  • websitestringOptional

    The brand’s website, starting with https://. Leave it out only when you send name and description instead.

  • namestringOptional

    The brand’s name. Norn takes it from the website when you leave it out.

  • descriptionstringOptional

    What the business does, in a sentence or two. Useful when there is no website. Up to 2,000 characters.

  • languagestringOptional

    The language ideas are written in, as an ISO 639-1 code such as en or nb. Norn takes it from the website when you leave it out.

  • countrystringOptional

    Where the brand is, as an ISO 3166-1 code such as US or NO. Norn uses it for the calendar. It knows the holidays of the US, the UK, Norway, Australia, Canada, New Zealand and Ireland, and goes by the season elsewhere.

  • archetypestringOptional

    The brand’s archetype. Norn suggests one when you leave it out.

    One of: innocent, everyman, hero, outlaw, explorer, creator, ruler, magician, lover, caregiver, jester, sage

  • rulesobjectOptional

    Instructions every idea follows. Norn never overrides them with what it learns from feedback.

    • alwaysstring[]Optional

      Things every idea should do, such as "Mention same-day callouts". Up to 20.

    • neverstring[]Optional

      Things no idea may do, such as "Mention prices". Up to 20.

curl -X POST https://api.native.no/v1/brands \
  -H "Authorization: Bearer $NATIVE_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "website": "https://pipedream.example",
  "country": "US"
}'

The brand comes back straight away, while Norn reads the website:

Response

{
  "id": "brand_7Hk2pQ",
  "object": "brand",
  "status": "reading",
  "name": null,
  "website": "https://pipedream.example",
  "language": null,
  "country": "US",
  "description": null,
  "offerings": [],
  "archetype": null,
  "rules": {
    "always": [],
    "never": []
  },
  "created_at": "2026-10-11T09:12:40Z"
}

Get a brand

#
GET/v1/brands/{brand_id}Preview

Returns the brand. While status is reading, ask again every ten seconds or so. When Norn could not read the website, for example because it blocks visitors, the status is failed: create the brand again with name and description instead.

curl https://api.native.no/v1/brands/brand_7Hk2pQ \
  -H "Authorization: Bearer $NATIVE_ACCESS_TOKEN"

Response

{
  "id": "brand_7Hk2pQ",
  "object": "brand",
  "status": "ready",
  "name": "Pipe Dream Plumbing",
  "website": "https://pipedream.example",
  "language": "en",
  "country": "US",
  "description": "Family plumbers in Columbus, Ohio. Same-day callouts, seven days a week.",
  "offerings": [
    "Emergency repairs",
    "Water heater installs",
    "Drain cleaning"
  ],
  "archetype": {
    "value": "jester",
    "rationale": "The website jokes about leaks and calls the team the drip squad. The humour always lands on a promise: they show up fast."
  },
  "rules": {
    "always": [
      "Mention same-day callouts"
    ],
    "never": [
      "Joke at the customer’s expense"
    ]
  },
  "created_at": "2026-10-11T09:12:40Z"
}

Update a brand

#
PATCH/v1/brands/{brand_id}Preview

Send only what you want to change. It takes the same fields as creating a brand. Lists, such as rules.never, are replaced rather than merged. A new website makes Norn read the site again.

curl -X PATCH https://api.native.no/v1/brands/brand_7Hk2pQ \
  -H "Authorization: Bearer $NATIVE_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "archetype": "jester",
  "rules": {
    "always": [
      "Mention same-day callouts"
    ],
    "never": [
      "Joke at the customer’s expense",
      "Mention prices"
    ]
  }
}'

The brand object

#

Fields

  • idstringRequired

    Starts with brand_.

  • objectstringRequired

    Always brand.

  • statusstringRequired

    You can ask for ideas once it is ready.

    One of: reading, ready, failed

  • namestring | nullRequired

    null until Norn has read the website.

  • websitestring | nullRequired

    The website Norn read.

  • languagestring | nullRequired

    ISO 639-1 code.

  • countrystring | nullRequired

    ISO 3166-1 code.

  • descriptionstring | nullRequired

    What Norn understood the business to be.

  • offeringsstring[]Required

    What the business sells or does, as Norn read it.

  • archetypeobject | nullRequired

    The brand’s archetype.

    • valuestringRequired

      The archetype.

      One of: innocent, everyman, hero, outlaw, explorer, creator, ruler, magician, lover, caregiver, jester, sage

    • rationalestring | nullRequired

      Why Norn chose it. null when you set the archetype yourself.

  • rulesobjectRequired

    Instructions every idea follows. Norn never overrides them with what it learns from feedback.

    • alwaysstring[]Optional

      Things every idea should do, such as "Mention same-day callouts". Up to 20.

    • neverstring[]Optional

      Things no idea may do, such as "Mention prices". Up to 20.

  • created_atstringRequired

    When the brand was created, in ISO 8601.

The Norn API is not open yet

Access opens from the waitlist. Join it and we will email you when your access is ready.

Join the waitlist