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?
  • Talk to Nödo: voice, cards and ordering from the Store
  • Conversations: 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
  • Your quotes

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
  • Paying from the apps (iPhone and Android)
  • 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
  • Delete and restore: what goes and what stays
  • Inbox and 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
    • Events and webhooks
    • 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
    • Sync
    • Website and domains
    • Statistics
    • Events

MCP

  • MCP server

Connectors

  • Brand connectors

Nödo and agents

  • Nödo in the brand

Genome

  • Genome specification
API/Brand API
Reference32 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.briefing.accept · Accept the briefing
  • works.editorial_plan.approve · Approve the editorial plan
  • works.create_from_product · Start a work
  • works.briefing.submit_form · Submit the briefing form
  • works.tasks.create · Add an own task
  • works.tasks.trash_own · Delete an own task
  • works.tasks.restore_own · Undo deleting a task
  • works.tasks.input.save · Save or hand in a task
  • works.tasks.files.prepare · Prepare a file for a task
  • works.tasks.report_issue · Report a problem with a step
  • works.tasks.files.register · Attach a file to a task
  • works.tasks.files.remove · Detach a file from a task
  • works.tasks.decide · Approve or send back a delivery
  • works.tasks.comment_files.discard · Drop a comment file
  • works.start_from_store · Start a Store work
  • works.questions.complete · Continue the work
  • works.set_archived · Archive or unarchive a work
  • works.set_title · Rename a work
  • works.tasks.set_title · Rename a task
  • works.approvers.set · Change who approves
  • works.approvers.set_mode · One or every approver
  • works.tasks.publication.start_draft · Start a publication draft
  • works.execution.outputs.submit · Submit an output
  • works.execution.outputs.review · Review an output
  • works.execution.brief.save · Save the work brief
  • works.execution.resume · Resume execution
  • works.execution.policy.set · Allow automatic actions
  • works.execution.calendar.set · Pause or schedule execution
  • works.payments.get · A payment step
  • works.payments.start · Pay a step
  • works.payments.confirm · Check a payment
  • works.payments.send_link · Payment link
  • works.payments.register · Register a received payment
  • works.sidebar · Works in the sidebar
  • works.screen.list · Works list (screen)
  • works.screen.work · Work page
  • works.screen.tasks · Steps of a work (screen)
  • works.screen.task · Task page
  • works.screen.deleted · Deleted work or step
  • works.list · List works

    Works of the brand with the product each comes from, 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. query matches the title or the product name ("Post" finds every Post, however it was renamed).

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

    Input

    {
      status?: "active" | "finished" | "archived" | "all"  // default "active"
      query?: string  // ≤ 120 · Words in the work title or its product name.
      cursor?: string  // ≤ 512 · Opaque cursor from a previous `nextCursor`.
      limit?: integer  // 1–50 · default 20
    }

    Output

    {
      items: Array<{
        id: string  // uuid
        name: string  // The title; people may rename it, and some follow their content (a Post takes its first words).
        productName: string | null  // The product the work comes from («Post», «Plan de contenidos · Esencial»); it never changes. Null for older works without one.
        status: string
        statusCategory: "triage" | "backlog" | "unstarted" | "started" | "paused" | "completed" | "canceled"  // Where the work stands in Nömad's status registry: unstarted, started, paused, completed or canceled.
        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, Chat, Screens, Apps
    StatusAvailable
    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  // The title; people may rename it, and some follow their content (a Post takes its first words).
      productName: string | null  // The product the work comes from («Post», «Plan de contenidos · Esencial»); it never changes. Null for older works without one.
      status: string
      statusCategory: "triage" | "backlog" | "unstarted" | "started" | "paused" | "completed" | "canceled"  // Where the work stands in Nömad's status registry: unstarted, started, paused, completed or canceled.
      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  // The brand-facing state: waiting_on_brand, waiting_on_brand_review, in_progress, blocked, upcoming, done, canceled or info.
        statusCategory: "triage" | "backlog" | "unstarted" | "started" | "paused" | "completed" | "canceled"  // The same task in Nömad's status registry (unstarted, started, paused, completed, canceled).
        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, Chat, Screens, Apps
    StatusAvailable
    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  // The brand-facing state: waiting_on_brand, waiting_on_brand_review, in_progress, blocked, upcoming, done, canceled or info.
        statusCategory: "triage" | "backlog" | "unstarted" | "started" | "paused" | "completed" | "canceled"  // The same task in Nömad's status registry (unstarted, started, paused, completed, canceled).
        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, Chat, Screens, Apps
    StatusAvailable
    Widgetrecord

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      id: string  // uuid
      workId: string  // uuid
      workName: string
      title: string
      status: string  // The brand-facing state: waiting_on_brand, waiting_on_brand_review, in_progress, blocked, upcoming, done, canceled or info.
      statusCategory: "triage" | "backlog" | "unstarted" | "started" | "paused" | "completed" | "canceled"  // The same task in Nömad's status registry (unstarted, started, paused, completed, canceled).
      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, Chat, Screens, Apps
    StatusAvailable
    Widgetconfirm

    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, Chat, Screens, Apps
    StatusAvailable
    Widgetconfirm

    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.briefing.accept · Accept the briefing

    Saves the answers agreed in a «Briefing with Nödo» conversation as the answers of that task and hands it in, so the work moves on. Call it once, when every required question has an answer the person agreed; lists go as arrays. The person accepts the summary on the card or edits it in the form. It never writes brand memory: durable learnings are proposed when the work closes.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.briefing.accept
    MCP toolworks_briefing_accept
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsNödo, Chat, Screens, Apps
    StatusAvailable
    Widgetconfirm

    Input

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

    Output

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

    works.editorial_plan.approve · Approve the editorial plan

    Approves the editorial plan of a work. rhythm accepts the weekly rhythm (kept with the recurring plan and reused every month); month approves the month and writes each slot (date and time, network, format, one-line idea) into its publication task as a draft with a proposed time. It never publishes or schedules for real: each post goes out only once someone schedules it in its task. expectedRevision is the board revision the person saw.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.editorial_plan.approve
    MCP toolworks_editorial_plan_approve
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsNödo, Chat, Screens, Apps
    StatusAvailable
    Widgetconfirm

    Input

    {
      taskId: string  // uuid
      expectedRevision: integer  // 0–9007199254740991
      part: "rhythm" | "month"
    }

    Output

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

    works.create_from_product · Start a work

    Starts a work from a Store product the brand may start without paying (free or included in its plan), with all its steps; the person confirms on a card first. Use it when a request is something the Store sells (a post, a logo, a web, a naming…): find the product with store_products_search or store_recommendations_list first and only call this for one marked includedInPlan. For a paid product it returns the Store page link 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, Chat, Screens, Apps
    StatusAvailable
    Widgetconfirm

    Input

    {
      productSlug: string  // ≤ 120 · Slug from store_products_search or store_recommendations_list.
      originConversationId?: string  // uuid · Set by Nödo itself; leave it out.
    }

    Output

    {
      ok: true
      id: string  // uuid
      name: string
      url: string  // uri · The new work in the app.
    }
    | {
      ok: false
      reason: "not_in_plan"
      storeUrl: string  // uri
    }

    works.briefing.submit_form · Submit the briefing form

    The plain-form side of «Briefing with Nödo», the same acceptance as works.briefing.accept: answers keyed by question id become the task's answers and the work moves on. Only the work's approver (or the Nömad team). Writes no brand memory.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.briefing.submit_form
    MCP toolworks_briefing_submit_form
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      answers: Record<string, string>
    }

    Output

    {
      ok: true
    }

    works.tasks.create · Add an own task

    Adds a step of the brand's own at the end of a work and returns it. A work bought in the Store follows its product's plan and refuses added steps (invalid_input, detail storePurchase).

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.create
    MCP toolworks_tasks_create
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      title: string  // ≤ 10000
      description?: string | null  // default null
      dueDate?: string | null  // default null
    }

    Output

    {
      task: {
        id: string  // uuid
        work_id: string  // uuid
        brand_id: string  // uuid
        title: string
      }
    }

    works.tasks.trash_own · Delete an own task

    Deletes a step the caller added to a work themselves (never the steps Nömad planned). Whoever may add steps may delete the ones they created. Soft delete: works.tasks.restore_own puts it back within ten minutes.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.trash_own
    MCP toolworks_tasks_trash_own
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      ok: true
    }

    works.tasks.restore_own · Undo deleting a task

    Puts back an own step the same person removed less than ten minutes ago (invalid_input, detail undoExpired, after that).

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.restore_own
    MCP toolworks_tasks_restore_own
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      ok: true
    }

    works.tasks.input.save · Save or hand in a task

    Saves what the brand writes into its own step (text, already uploaded files, checklist and questionnaire answers). With final: true it hands the step in: it is marked done and the work moves on. Only open steps of the brand accept input.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.input.save
    MCP toolworks_tasks_input_save
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      final?: boolean  // default false
      data: {
        client_text?: string | null
        client_files?: string[]  // ≤ 30 items
        client_items?: Array<{
          text: string  // ≤ 2000
          checked: boolean
        }>  // ≤ 100 items
        client_answers?: Record<string, string>
      }
    }

    Output

    {
      ok: true
    }

    works.tasks.files.prepare · Prepare a file for a task

    Before uploading a file to a work step: checks the step belongs to the brand and the bytes fit the plan and 50 MB, reserves them and returns a single-use signed upload URL for a server-chosen path in the step folder. Upload with HTTP PUT, then call works.tasks.files.register with storagePath.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.files.prepare
    MCP toolworks_tasks_files_prepare
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsScreens, Apps, API
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      fileName: string  // ≤ 255
      fileSize: integer  // –52428800
      mimeType?: string  // ≤ 255
    }

    Output

    {
      storagePath: string
      uploadUrl: string  // uri
      token: string
    }

    works.tasks.report_issue · Report a problem with a step

    A problem with a work step: a person's report (user_report) becomes a feedback ticket support answers; a step type the app cannot draw yet (unknown_module) opens one deduplicated ticket per person and step and alerts the team with platform and version.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.report_issue
    MCP toolworks_tasks_report_issue
    Scopeworks.write
    Minimum roleViewer
    Human confirmationNo
    DoorsScreens, Apps, API
    StatusAvailable

    Input

    {
      workId: string  // uuid
      taskId: string  // uuid
      reason: "user_report" | "unknown_module"
      moduleType?: string | null
      message?: string | null
      platform?: "ios" | "android" | "mac" | "web"  // default "ios"
      appVersion?: string | null
    }

    Output

    {
      ticketId: string | null
      deduplicated: boolean
    }

    works.tasks.files.register · Attach a file to a task

    Registers a file already uploaded into the task's folder (<brand>/task-files/<task>/) on the step and in the brand's Library. It never fetches a URL. The step's file rules are checked before anything is stored, so a refused file never reaches the Library: conflict with files_not_accepted (the step takes no files), unsupported_media or file_too_large (no place of the step takes that type or size).

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.files.register
    MCP toolworks_tasks_files_register
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      storagePath: string  // ≤ 1024
      fileName: string  // ≤ 255
      fileSize: integer  // –52428800
      mimeType?: string  // ≤ 255
    }

    Output

    {
      url: string
      fileName: string
      fileSize: number
      mimeType: string
    }

    works.tasks.files.remove · Detach a file from a task

    Detaches one file from the brand's step. The file itself stays in the brand's Library.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.files.remove
    MCP toolworks_tasks_files_remove
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      fileUrl: string  // ≤ 2048
    }

    Output

    {
      ok: true
    }

    works.tasks.decide · Approve or send back a delivery

    The approver's decision on a delivery waiting for the brand's review: approve it (the step closes and the work advances) or request changes with a comment, the files of the comment's draft folder and «+» cards. In a work where everyone must approve, partial says who is still to approve.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.decide
    MCP toolworks_tasks_decide
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      decision: "approve"
      taskId: string  // uuid
    }
    | {
      decision: "request_changes"
      taskId: string  // uuid
      comment: string  // ≤ 20000
      extras?: {
        draftId?: string
        attachments?: unknown
        inserts?: unknown
      }
    }

    Output

    {
      ok: true
      partial: {
        approved: integer  // -9007199254740991–9007199254740991
        required: integer  // -9007199254740991–9007199254740991
        waitingFor: string[]
      }
      | null
    }

    works.tasks.comment_files.discard · Drop a comment file

    Deletes a file uploaded into the draft folder of a «request changes» comment before it is sent, unless a saved comment already holds it. Only the work's approver, while the delivery waits for review.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.comment_files.discard
    MCP toolworks_tasks_comment_files_discard
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      draftId: string  // uuid
      path: string  // ≤ 600
    }

    Output

    {
      ok: true
    }

    works.start_from_store · Start a Store work

    Starts a Store product as a work and returns it with its steps. Free or plan-included products start at once; with priceId (a one-time priced product) it starts now and is paid inside the work, which needs whoever manages the brand's plan. Recurring products keep their subscription checkout.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.start_from_store
    MCP toolworks_start_from_store
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      productId: string  // ≤ 120
      checkoutAttemptId?: string  // ≤ 120
      priceId?: string  // ≤ 120
      extras?: Array<{
        lineKey: string  // ≤ 200
        quantity: integer  // -9007199254740991–9007199254740991
      }>  // ≤ 50 items
      originConversationId?: string  // uuid
    }

    Output

    {
      workId: string  // uuid
      work: {
        id: string  // uuid
        name: string
      }
      | null
      taskError: string | null
    }

    works.questions.complete · Continue the work

    Once no brand question blocks a work, lets it continue: resolves its steps (a manual work only clears the old wait). Answers error: questions_pending while a required question is still open; it never takes prompts or answers.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.questions.complete
    MCP toolworks_questions_complete
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
    }

    Output

    {
      taskCount: integer  // -9007199254740991–9007199254740991
      error: string | null
    }

    works.set_archived · Archive or unarchive a work

    Archives a work (it leaves the active list) or brings it back. Asking for the state it already has changes nothing.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.set_archived
    MCP toolworks_set_archived
    Scopeworks.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      archived: boolean
    }

    Output

    {
      work: {
        id: string  // uuid
        archived_at: string | null
        archived_by: string | null
      }
    }

    works.set_title · Rename a work

    Pins a work's title, or clears it so the title follows its content again (invalid_input, detail title_required, for a work that cannot follow its content). The product name next to it never changes.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.set_title
    MCP toolworks_set_title
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      title: string  // ≤ 2000
    }

    Output

    {
      title: string
      source: "manual" | "auto"
    }

    works.tasks.set_title · Rename a task

    Pins a task's title, or clears it so the title follows its content again (invalid_input, detail title_required, when it cannot).

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.set_title
    MCP toolworks_tasks_set_title
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      title: string  // ≤ 2000
    }

    Output

    {
      title: string
      source: "manual" | "auto"
    }

    works.approvers.set · Change who approves

    Replaces who approves a work on one side (client: the brand, owners and admins decide; internal: Nömad, one person); an empty list returns that side to its default. Whoever is added hears it, with every delivery already waiting. Returns the approvers view.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.approvers.set
    MCP toolworks_approvers_set
    Scopeworks.write
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      role: "client" | "internal"
      approvers: Array<{
        userId: string  // uuid
        required?: boolean  // default true
        defaultSource?: "manual" | "requester" | "brand_manager"  // default "manual"
      }>  // ≤ 5 items
    }

    Output

    {
      viewerId?: string | null
      canEdit: {
        client: boolean
        internal: boolean
      }
    }

    works.approvers.set_mode · One or every approver

    For the brand's side of a work: one approval is enough (any) or everyone must approve (all). Deliveries already waiting follow the new mode from their next approval; nobody is notified.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.approvers.set_mode
    MCP toolworks_approvers_set_mode
    Scopeworks.write
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      mode: "any" | "all"
    }

    Output

    {
      viewerId?: string | null
      canEdit: {
        client: boolean
        internal: boolean
      }
    }

    works.tasks.publication.start_draft · Start a publication draft

    Creates the draft post of a «Publication» step the first time its performer opens it (the brand for its own step, Nömad for Nömad's), then always returns the same one. It never publishes or schedules.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.tasks.publication.start_draft
    MCP toolworks_tasks_publication_start_draft
    Scopeworks.write
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      postId: string  // uuid
    }

    works.execution.outputs.submit · Submit an output

    Saves a new immutable revision of one output of a running component (text, files from the Library, link). The brand only submits components whose responsibility is the client's; idempotencyKey makes a retry return the same revision.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.execution.outputs.submit
    MCP toolworks_execution_outputs_submit
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      outputKey: string
      payload: Record<string, unknown>
      idempotencyKey: string  // uuid
    }

    Output

    {
      work_id: string
    }

    works.execution.outputs.review · Review an output

    Approves or rejects (with feedback) one component output; the work execution then continues with whatever comes next.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.execution.outputs.review
    MCP toolworks_execution_outputs_review
    Scopeworks.write
    Minimum roleMember
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      outputId: string  // uuid
      decision: "approved" | "rejected"
      feedback?: string  // ≤ 4000
    }

    Output

    {
      work_id: string
    }

    works.execution.brief.save · Save the work brief

    Saves the answers of a work's execution brief (expectedVersion is the version the person saw) and lets the work continue.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.execution.brief.save
    MCP toolworks_execution_brief_save
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      answers: Record<string, unknown>
      expectedVersion: integer  // 0–9007199254740991
    }

    Output

    {
      work_id: string
    }

    works.execution.resume · Resume execution

    Moves a work's execution forward; with retryTaskId it first retries that failed component.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.execution.resume
    MCP toolworks_execution_resume
    Scopeworks.write
    Minimum roleMember
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      retryTaskId?: string  // uuid
    }

    Output

    {
      ok: true
    }

    works.execution.policy.set · Allow automatic actions

    Sets which actions the execution of a product's works may take on its own on the brand's connections (create a draft, schedule, publish, send).

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.execution.policy.set
    MCP toolworks_execution_policy_set
    Scopeworks.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      productId: string  // uuid
      enabled: boolean
      allowedActions: Array<{
        integrationProductId: string  // uuid
        operation: "create_draft" | "schedule" | "publish" | "send"
        integrationId: string  // uuid
      }>  // ≤ 50 items
    }

    Output

    {
      product_id: string
      enabled: boolean
    }

    works.execution.calendar.set · Pause or schedule execution

    Pauses or resumes the execution of a contract and sets when it starts and ends.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.execution.calendar.set
    MCP toolworks_execution_calendar_set
    Scopeworks.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      contractId: string  // uuid
      paused: boolean
      startsAt: string | null
      endsAt: string | null
    }

    Output

    {
      ok: true
    }

    works.payments.get · A payment step

    What a work's payment step asks for (amount with tax, deposit or rest, state), whether the caller may pay it, and for a deposit whether the rest will be charged automatically with the same card (autopay). Paying runs works.payments.start.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.payments.get
    MCP toolworks_payments_get
    Scopeworks.read
    Minimum roleBilling
    Human confirmationNo
    DoorsScreens, Apps, API
    StatusAvailable

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      summary: {
        taskId: string
        workId: string
        state: string
        title?: string
        kind?: "partial" | "final"
        percentBps?: integer | null
        grossMinor?: integer  // -9007199254740991–9007199254740991
        currency?: string
        remainingMinor?: integer  // -9007199254740991–9007199254740991
      }
      canPay: boolean
      autopay: {
        available: boolean  // A deposit with a later payment step in the same work.
        enabled: boolean  // The rest will be charged off-session with the card of this deposit.
        suggested: boolean  // On by default: the brand pays itself.
        decided: boolean  // Someone already chose on or off for this deposit.
      }
      | null
    }

    works.payments.start · Pay a step

    Prepares the PaymentIntent of a work's payment step (the amount always comes from the server) for the person to confirm with Stripe. Only whoever pays for the brand.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.payments.start
    MCP toolworks_payments_start
    Scopeworks.write
    Minimum roleBilling
    Human confirmationNo
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      autopayRest?: "on" | "off" | "suggested"
    }

    Output

    {
      summary: {
        taskId: string
        workId: string
        state: string
        title?: string
        kind?: "partial" | "final"
        percentBps?: integer | null
        grossMinor?: integer  // -9007199254740991–9007199254740991
        currency?: string
        remainingMinor?: integer  // -9007199254740991–9007199254740991
      }
      clientSecret: string | null
      publishableKey: string
      sheet?: {
        publishableKey: string
        customerId: string | null
        customerSessionClientSecret: string | null
        merchantCountryCode: "ES"
        merchantDisplayName: string
        googlePayEnvironment: "test" | "production"
      }
      | null
      autopay?: {
        available: boolean  // A deposit with a later payment step in the same work.
        enabled: boolean  // The rest will be charged off-session with the card of this deposit.
        suggested: boolean  // On by default: the brand pays itself.
        decided: boolean  // Someone already chose on or off for this deposit.
      }
      | null
    }

    works.payments.confirm · Check a payment

    After the person confirms in Stripe, re-reads the payment on the server and closes the step when it is paid.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.payments.confirm
    MCP toolworks_payments_confirm
    Scopeworks.write
    Minimum roleBilling
    Human confirmationNo
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      taskId: string
      workId: string
      state: string
      title?: string
      kind?: "partial" | "final"
      percentBps?: integer | null
      grossMinor?: integer  // -9007199254740991–9007199254740991
      currency?: string
      remainingMinor?: integer  // -9007199254740991–9007199254740991
    }

    works.payments.send_link · Payment link

    Nömad team only: creates a payment link for a step, valid for 30 days, that pays without an account; the amount is recomputed when it is opened.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.payments.send_link
    MCP toolworks_payments_send_link
    Scopeworks.write
    Minimum roleBilling
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // uuid
    }

    Output

    {
      url: string
      expiresAt: string
      summary: {
        taskId: string
        workId: string
        state: string
        title?: string
        kind?: "partial" | "final"
        percentBps?: integer | null
        grossMinor?: integer  // -9007199254740991–9007199254740991
        currency?: string
        remainingMinor?: integer  // -9007199254740991–9007199254740991
      }
    }

    works.payments.register · Register a received payment

    Nömad team only: records a payment received outside Stripe (transfer, cash, card terminal). Same ledger and same step closure; idempotencyKey makes a retry harmless.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/works.payments.register
    MCP toolworks_payments_register
    Scopeworks.write
    Minimum roleBilling
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      taskId: string  // uuid
      method: "transfer" | "cash" | "card_terminal" | "other"
      reference: string | null
      receivedOn: string | null
      idempotencyKey: string  // uuid
    }

    Output

    {
      taskId: string
      workId: string
      state: string
      title?: string
      kind?: "partial" | "final"
      percentBps?: integer | null
      grossMinor?: integer  // -9007199254740991–9007199254740991
      currency?: string
      remainingMinor?: integer  // -9007199254740991–9007199254740991
    }

    works.sidebar · Works in the sidebar

    The brand's works in progress with their visible steps (and, for a «Post» work, where its post is), the archived ones, the person's pins and order: what the «Works» sidebar lists. Catalogue test runs only for Nömad staff.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.sidebar
    MCP toolworks_sidebar
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      timeZone?: string | null
      asClient?: boolean  // Read as the brand sees it (a staff viewer previewing as client). Only narrows.
    }

    Output

    {
      works: Array<{
        id: string
        name: string
        status: string | null
        color: string | null
        due_date: string | null
        is_recurring: boolean | null
        recurring_interval: string | null
        archived_at: string | null
        archived_by: string | null
        product_name?: string | null  // The product the work comes from, in the reader's language.
        product_icon?: string | null  // The product's icon name (`products.icon`): the kind-of-work glyph lists draw.
        updated_at?: string | null
        created_at?: string | null
        approvalElsewhere?: boolean  // Someone else approves this work: its approval steps are not the reader's to act on.
        tasks?: Array<{
          id: string
          title: string
          status: string | null
          task_type?: string | null
          module_type?: string | null
          step_kind?: string | null
          artifact_type?: string | null
          completion_mode?: string | null
          due_date?: string | null
          max_days?: number | null
          created_at?: string | null
          post?: {
            chip: string  // Where the step's post is, as the Posts list says it: draft, in_review, approved_unscheduled, scheduled, sending, manual_pending, attention, published, deleted, cancelled or unconnected.
            scheduledAt: string | null  // The next time one of its destinations goes out (ISO), when one is scheduled.
          }
          | null  // Only on the single «Publicación» step of a «Post» work whose draft exists.
        }>
      }>
      archived: Array<{
        id: string
        name: string
        status: string | null
        color: string | null
        due_date: string | null
        is_recurring: boolean | null
        recurring_interval: string | null
        archived_at: string | null
        archived_by: string | null
        product_name?: string | null  // The product the work comes from, in the reader's language.
        product_icon?: string | null  // The product's icon name (`products.icon`): the kind-of-work glyph lists draw.
        updated_at?: string | null
        created_at?: string | null
        approvalElsewhere?: boolean  // Someone else approves this work: its approval steps are not the reader's to act on.
        tasks?: Array<{
          id: string
          title: string
          status: string | null
          task_type?: string | null
          module_type?: string | null
          step_kind?: string | null
          artifact_type?: string | null
          completion_mode?: string | null
          due_date?: string | null
          max_days?: number | null
          created_at?: string | null
          post?: {
            chip: string  // Where the step's post is, as the Posts list says it: draft, in_review, approved_unscheduled, scheduled, sending, manual_pending, attention, published, deleted, cancelled or unconnected.
            scheduledAt: string | null  // The next time one of its destinations goes out (ISO), when one is scheduled.
          }
          | null  // Only on the single «Publicación» step of a «Post» work whose draft exists.
        }>
      }>
      completed?: Array<{
        id: string
        name: string
        status: string | null
        color: string | null
        due_date: string | null
        is_recurring: boolean | null
        recurring_interval: string | null
        archived_at: string | null
        archived_by: string | null
        product_name?: string | null  // The product the work comes from, in the reader's language.
        product_icon?: string | null  // The product's icon name (`products.icon`): the kind-of-work glyph lists draw.
        updated_at?: string | null
        created_at?: string | null
        approvalElsewhere?: boolean  // Someone else approves this work: its approval steps are not the reader's to act on.
        tasks?: Array<{
          id: string
          title: string
          status: string | null
          task_type?: string | null
          module_type?: string | null
          step_kind?: string | null
          artifact_type?: string | null
          completion_mode?: string | null
          due_date?: string | null
          max_days?: number | null
          created_at?: string | null
          post?: {
            chip: string  // Where the step's post is, as the Posts list says it: draft, in_review, approved_unscheduled, scheduled, sending, manual_pending, attention, published, deleted, cancelled or unconnected.
            scheduledAt: string | null  // The next time one of its destinations goes out (ISO), when one is scheduled.
          }
          | null  // Only on the single «Publicación» step of a «Post» work whose draft exists.
        }>
      }>
      activeTotal: integer  // -9007199254740991–9007199254740991
      pinnedIds: string[]
      pinnedOrder: string[]
      workOrder: string[]
      fetchedAt: number
      today: string
      timeZone?: string | null
    }

    works.screen.list · Works list (screen)

    One page of the brand's «Works» exactly as the app draws it: each work with its step counts (total, done, in progress), up to three open steps waiting for the brand (approval steps only where the reader is the approver) and its product name. Active by default; archived for the archive. Pages by offset/limit (max 72). For a compact, searchable list use works.list.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.screen.list
    MCP toolworks_screen_list
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      archived?: boolean
      offset?: integer  // 0–100000
      limit?: integer  // 1–72
    }

    Output

    {
      works: Array<{
        id: string  // uuid
        name: string
        status: string
        due_date: string | null
        is_recurring: boolean | null
        recurring_interval: string | null
        archived_at: string | null
        created_at: string
        updated_at: string
        source_product_id?: string | null
        product_name?: string | null
        product_icon?: string | null
        task_count: number  // Steps in scope: not informational, not canceled.
        completed_count: number
        working_count: number  // Steps Nömad is working on right now.
        client_pending_count: number  // Open steps waiting for the brand.
      }>
      total: integer  // -9007199254740991–9007199254740991
      nextOffset: integer  // -9007199254740991–9007199254740991
      hasMore: boolean
      error: string | null
    }

    works.screen.work · Work page

    One work exactly as its page draws it: the work row, the first page of its steps (with who at Nömad holds each), who approves it, the approved deliverables, the subscription a recurring work comes from and its product name. not_found when it is not this brand's. For the compact shape use works.get.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.screen.work
    MCP toolworks_screen_work
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      preview?: boolean  // Staff previewing the brand as a client: edit controls are left out.
    }

    Output

    {
      work: {
        id: string  // uuid
        brand_id: string  // uuid
        name: string
        status: string
        color: string | null
        due_date: string | null
        source: string | null
        source_product_id: string | null
        is_recurring: boolean | null
        recurring_interval: string | null
        archived_at: string | null
        archived_by: string | null
        created_at: string
        updated_at: string
      }
      tasks: {
        tasks: Array<{
          id: string  // uuid
          work_id: string  // uuid
          title: string
          description: string | null
          status: string
          task_type: string | null
          completion_mode: string | null
          module_type: string | null
          position: number | null
          due_date: string | null
          client_answers: unknown  // Answers by question id.
          client_submitted_at: string | null
          output_url: string | null
          template_id: string | null
          updated_at: string
        }>
        total: integer  // -9007199254740991–9007199254740991
        nextOffset: integer  // -9007199254740991–9007199254740991
        hasMore: boolean
        error: "loadFailed" | null
      }
      approvers: Record<string, unknown> | null
      operationalDeliverables: Array<{
        id: string
        taskId: string
        taskTitle: string
        title: string
        revision: integer  // -9007199254740991–9007199254740991
      }>
      subscription: {
        id: string
        name: string
      }
      | null
      productName: string | null
    }

    works.screen.tasks · Steps of a work (screen)

    One page of a work's steps exactly as its page draws them, in order, with who at Nömad holds each. Pages by offset/limit (max 500).

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.screen.tasks
    MCP toolworks_screen_tasks
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      offset?: integer  // 0–100000
      limit?: integer  // 1–500
    }

    Output

    {
      work: {
        id: string  // uuid
        brand_id: string  // uuid
        name: string
        status: string
        color: string | null
        due_date: string | null
        source: string | null
        source_product_id: string | null
        is_recurring: boolean | null
        recurring_interval: string | null
        archived_at: string | null
        archived_by: string | null
        created_at: string
        updated_at: string
      }
      | null
      tasks: {
        tasks: Array<{
          id: string  // uuid
          work_id: string  // uuid
          title: string
          description: string | null
          status: string
          task_type: string | null
          completion_mode: string | null
          module_type: string | null
          position: number | null
          due_date: string | null
          client_answers: unknown  // Answers by question id.
          client_submitted_at: string | null
          output_url: string | null
          template_id: string | null
          updated_at: string
        }>
        total: integer  // -9007199254740991–9007199254740991
        nextOffset: integer  // -9007199254740991–9007199254740991
        hasMore: boolean
        error: "loadFailed" | null
      }
    }

    works.screen.task · Task page

    One task exactly as its page draws it: the task, its work, the sibling steps, who approves, and what its module asks for (questionnaire, change rounds with signed files, Nödo briefing, editorial board, domain choice, payment). A «Publicación» task answers kind: "publication" with the common part only; its post is read with the publishing operations. not_found when it is not this brand's.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.screen.task
    MCP toolworks_screen_task
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      workId: string  // uuid
      taskId: string  // uuid
      preview?: boolean  // Staff previewing the brand as a client: edit controls are left out.
      fallbackPillars?: string[]  // ≤ 6 items · Pillars an editorial plan previews when the briefing has none (in the reader's language).
    }

    Output

    {
      kind: "task" | "publication"
      work: {
        id: string  // uuid
        brand_id: string  // uuid
        name: string
        status: string
        color: string | null
        due_date: string | null
        source: string | null
        source_product_id: string | null
        is_recurring: boolean | null
        recurring_interval: string | null
        archived_at: string | null
        archived_by: string | null
        created_at: string
        updated_at: string
      }
      task: {
        id: string  // uuid
        work_id: string  // uuid
        title: string
        description: string | null
        status: string
        task_type: string | null
        completion_mode: string | null
        module_type: string | null
        position: number | null
        due_date: string | null
        client_answers: unknown  // Answers by question id.
        client_submitted_at: string | null
        output_url: string | null
        template_id: string | null
        updated_at: string
        step_kind: string | null
        artifact_type: string | null
        accept_text: boolean | null
        accept_files: boolean | null
        accept_questionnaire: boolean | null
        is_required: boolean | null
        estimated_hours: number | null
        estimated_minutes: number | null
        max_days: number | null
        depends_on: string[] | null
        client_text: string | null
        client_files: unknown  // URLs of the files the brand attached.
        output_text: string | null
        created_at: string
      }
      siblings: Array<{
        id: string  // uuid
        title: string
      }>
      approvers: Record<string, unknown> | null
      questions?: Array<{
        id: string
        question: string
        sort_order?: number | null
        field_type?: string | null
        placeholder?: string | null
        is_required?: boolean | null
        options?: unknown  // The choices (a list) or the field's settings: `choices`, `allow_other`, lengths and file limits.
        helper_text?: string | null
      }>
    }

    works.screen.deleted · Deleted work or step

    What a deleted work or step shows when its link is opened, instead of a 404: its name, when it was deleted, who did it and whether the caller may restore it (an own step within its undo window; a work is restored by Nömad). deleted is null when the record is live, foreign or never existed; the live reads (works.screen.work, works.screen.task) keep answering not_found for it.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/works.screen.deleted
    MCP toolworks_screen_deleted
    Scopeworks.read
    Minimum roleViewer
    Human confirmationNo
    DoorsScreens, Apps, API
    StatusAvailable

    Input

    {
      workId: string  // uuid
      taskId?: string  // uuid
    }

    Output

    {
      deleted: {
        entity: "work" | "task"
        id: string  // uuid
        workId: string  // uuid
        name: string
        deletedAt: string
        deletedBy: {
          id: string  // uuid
          name: string | null
        }
        | null
        restorable: boolean
      }
      | null
    }

    Updated on January 1, 1970

    PreviousLibraryNextCalendar

    In this section

    • Errors
    • Permissions and roles
    • Events and webhooks
    • Brand
    • Genome
    • Brand Kit
    • Library
    • 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

    • 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.briefing.accept · Accept the briefing
    • works.editorial_plan.approve · Approve the editorial plan
    • works.create_from_product · Start a work
    • works.briefing.submit_form · Submit the briefing form
    • works.tasks.create · Add an own task
    • works.tasks.trash_own · Delete an own task
    • works.tasks.restore_own · Undo deleting a task
    • works.tasks.input.save · Save or hand in a task
    • works.tasks.files.prepare · Prepare a file for a task
    • works.tasks.report_issue · Report a problem with a step
    • works.tasks.files.register · Attach a file to a task
    • works.tasks.files.remove · Detach a file from a task
    • works.tasks.decide · Approve or send back a delivery
    • works.tasks.comment_files.discard · Drop a comment file
    • works.start_from_store · Start a Store work
    • works.questions.complete · Continue the work
    • works.set_archived · Archive or unarchive a work
    • works.set_title · Rename a work
    • works.tasks.set_title · Rename a task
    • works.approvers.set · Change who approves
    • works.approvers.set_mode · One or every approver
    • works.tasks.publication.start_draft · Start a publication draft
    • works.execution.outputs.submit · Submit an output
    • works.execution.outputs.review · Review an output
    • works.execution.brief.save · Save the work brief
    • works.execution.resume · Resume execution
    • works.execution.policy.set · Allow automatic actions
    • works.execution.calendar.set · Pause or schedule execution
    • works.payments.get · A payment step
    • works.payments.start · Pay a step
    • works.payments.confirm · Check a payment
    • works.payments.send_link · Payment link
    • works.payments.register · Register a received payment
    • works.sidebar · Works in the sidebar
    • works.screen.list · Works list (screen)
    • works.screen.work · Work page
    • works.screen.tasks · Steps of a work (screen)
    • works.screen.task · Task page
    • works.screen.deleted · Deleted work or step