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?
  • What does a Brand Manager do?
  • Brand Kit and Library
  • Posts and calendar
  • Connections
  • Meetings

Work

  • Work and tasks
  • Ordering work
  • Following, reviewing and approving deliveries
  • Custom quotes
  • Yes, there are humans behind it

Account and billing

  • Plans and pricing
  • Billing and payments
  • Roles and permissions
  • Workspaces and multiple brands
  • Languages, apps and data

Help

  • How to get help

API

  • Brand API
    • Permissions and roles
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    • Calendar
    • Connections
    • Publishing
    • Inbox
    • Team
    • Conversation
    • Memory
    • Questions
    • Media
    • Store
    • Plan
    • Orders
    • Activity

MCP

  • MCP server

Connectors

  • Brand connectors

Nödo and agents

  • Nödo in the brand
API/Brand API
Reference4 min read

Works

Works, steps and brand tasks.

On this page
  • works.list · List works
  • works.get · Open a work
  • works.tasks.pending · Your tasks
  • works.tasks.get · Open a task
  • works.tasks.answer · Answer a task
Русский
한국어
日本語
中文
हिन्दी
Open the app
  • works.tasks.review · Approve or request changes
  • works.create_from_product · Start a work
  • works.list · List works

    Works of the brand with status, progress and how many tasks wait for the brand. A work is a larger job with several steps; a task is one bounded step.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.list
    MCP toolworks_list
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API
    StatusAvailable
    Widgetlist

    Input

    {
      status?: "active" | "finished" | "archived" | "all"  // default "active"
      cursor?: string  // ≤ 512 · Opaque cursor from a previous `nextCursor`.
      limit?: integer  // 1–50 · default 20
    }

    Output

    {
      items: Array<{
        id: string  // uuid
        name: string
        status: string
        dueDate: string | null
        progress: {
          done: integer  // -9007199254740991–9007199254740991
          total: integer  // -9007199254740991–9007199254740991
        }
        waitingOnBrand: integer  // -9007199254740991–9007199254740991 · Tasks waiting for the brand.
      }>
      nextCursor: string | null
    }

    works.get · Open a work

    One work with its steps and who holds each one. detailed adds deliverables and answers; keep concise unless you need them.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.get
    MCP toolworks_get
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API
    StatusPlanned
    Widgetrecord

    Input

    {
      workId: string  // uuid
      format?: "concise" | "detailed"  // default "concise" · `concise` returns names and states only; `detailed` adds ids and full fields.
    }

    Output

    {
      id: string  // uuid
      name: string
      status: string
      dueDate: string | null
      progress: {
        done: integer  // -9007199254740991–9007199254740991
        total: integer  // -9007199254740991–9007199254740991
      }
      waitingOnBrand: integer  // -9007199254740991–9007199254740991 · Tasks waiting for the brand.
      steps: Array<{
        id: string  // uuid
        title: string
        status: string
        kind: "questionnaire" | "files" | "review" | "information"
        dueDate: string | null
        owner: "brand" | "nomad"
      }>
    }

    works.tasks.pending · Your tasks

    Tasks waiting for the brand across all works, most urgent first. Use it to answer "what do I have pending?".

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.tasks.pending
    MCP toolworks_tasks_pending
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API
    StatusPlanned
    Widgetlist

    Input

    {
      cursor?: string  // ≤ 512 · Opaque cursor from a previous `nextCursor`.
      limit?: integer  // 1–50 · default 20
    }

    Output

    {
      items: Array<{
        id: string  // uuid
        workId: string  // uuid
        workName: string
        title: string
        status: string
        kind: "questionnaire" | "files" | "review" | "information"
        dueDate: string | null
      }>
      nextCursor: string | null
    }

    works.tasks.get · Open a task

    One task with its questionnaire (the snapshot contracted with the work), saved draft answers and deliverables to review.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.tasks.get
    MCP toolworks_tasks_get
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API
    StatusPlanned
    Widgetform

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      id: string  // uuid
      workId: string  // uuid
      workName: string
      title: string
      status: string
      kind: "questionnaire" | "files" | "review" | "information"
      dueDate: string | null
      questions: Array<{
        id: string
        label: string
        type: string
        required: boolean
        options?: string[]
      }>
      draft: Array<{
        questionId: string
        value: string | number | boolean | string[]
      }>
      deliverables: Array<{
        assetId: string  // uuid
        name: string
        version: integer  // -9007199254740991–9007199254740991
      }>
      revision: integer  // -9007199254740991–9007199254740991
    }

    works.tasks.answer · Answer a task

    Saves questionnaire answers. With submit: true the task is handed in and the work advances, which asks for confirmation.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.answer
    MCP toolworks_tasks_answer
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsNödo, MCP, API
    StatusPlanned
    Widgetform

    Input

    {
      taskId: string  // uuid
      expectedRevision: integer  // -9007199254740991–9007199254740991
      answers: Array<{
        questionId: string
        value: string | number | boolean | string[]
      }>  // ≤ 100 items
      submit?: boolean  // default false
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    works.tasks.review · Approve or request changes

    Approves a deliverable or requests changes with a comment. Only for review tasks that are waiting for the brand; the task status is checked server-side.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.review
    MCP toolworks_tasks_review
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsNödo, MCP, API
    StatusPlanned
    Widgetreview

    Input

    {
      decision: "approve"
      taskId: string  // uuid
      expectedRevision: integer  // -9007199254740991–9007199254740991
    }
    | {
      decision: "request_changes"
      taskId: string  // uuid
      expectedRevision: integer  // -9007199254740991–9007199254740991
      comment: string  // ≤ 4000
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    works.create_from_product · Start a work

    Creates a work from a Store product included in the brand plan. If the product is paid and not included it returns an action link to its Store page instead; it never charges.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.create_from_product
    MCP toolworks_create_from_product
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsNödo, MCP, API
    StatusPlanned
    Widgetconfirm

    Input

    {
      productSlug: string  // ≤ 120
      notes?: string  // ≤ 2000
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }
    | {
      ok: false
      reason: "not_in_plan"
      storeUrl: string  // uri
    }

    Updated on January 1, 1970

    PreviousLibraryNextCalendar

    In this section

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

    On this page

    • works.list · List works
    • works.get · Open a work
    • works.tasks.pending · Your tasks
    • works.tasks.get · Open a task
    • works.tasks.answer · Answer a task
    • works.tasks.review · Approve or request changes
    • works.create_from_product · Start a work