Nooks Tasks API

Manage tasks (one-off calls and email activities)

Operations 7

GET /tasks List tasks #
POST /tasks Create a task #
GET /tasks/{id} Get task by ID #
PATCH /tasks/{id} Update a task #
DELETE /tasks/{id} Delete a task #
POST /tasks/{id}/complete Complete a task #
POST /tasks/{id}/skip Skip a task #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nooks-tasks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nooks-tasks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Nooks Sequencing Tasks API
  version: 0.1.0
  description: "The Nooks Sequencing API provides programmatic access to manage sequences, tasks, templates, and prospect engagement workflows created using the Nooks SEP.\n\n## Authentication\n\nSend a bearer token in the `Authorization` header:\n```\nAuthorization: Bearer <token>\n```\n\nTwo token types are accepted on the same header — the API detects which\nformat you sent and validates accordingly. If you already have a token,\npaste it into the Authentication panel and skip the flow setup.\n\n### API keys\n\nLong-lived, workspace-scoped. Best for backend integrations and\nserver-to-server automation. Generate one from **Developer Settings →\nAPI Keys** in your Nooks workspace. API keys are prefixed `nooks-api-`\nand have full read/write access within the owning workspace.\n\n### OAuth 2.0 access tokens\n\nShort-lived (1 hour), user-scoped, scope-limited JWTs issued by\n`https://oauth.nooks.in` via the standard authorization-code + PKCE flow.\nBest for third-party apps acting on behalf of a specific user — the token\ncarries that user's identity and a subset of scopes the user consented\nto. Refresh tokens rotate every 90 days and are invalidated on first\nre-use (refresh-token reuse detection).\n\n**Endpoints:**\n\n- Authorize: `https://oauth.nooks.in/oauth/authorize`\n- Token: `https://oauth.nooks.in/oauth/token`\n- JWKS: `https://oauth.nooks.in/.well-known/jwks.json`\n- Server metadata (RFC 8414): `https://oauth.nooks.in/.well-known/oauth-authorization-server`\n\n**Available scopes:**\n\n| Scope | Grants |\n| --- | --- |\n| `prospects:read` | View your prospects |\n| `prospects:write` | Create and update prospects |\n| `sequences:read` | View your sequences |\n| `sequences:write` | Create and update sequences |\n| `sequence-steps:read` | View sequence steps |\n| `sequence-states:read` | View sequence enrollments |\n| `sequence-states:write` | Enroll prospects and manage enrollments |\n| `tasks:read` | View your tasks |\n| `tasks:write` | Create, update, complete, skip, and delete tasks |\n| `calls:read` | View your calls |\n| `calls:write` | Create and update calls |\n| `call-dispositions:read` | View call dispositions |\n| `emails:read` | View your emails |\n| `emails:write` | Create and update emails |\n| `mailboxes:read` | View connected mailboxes |\n| `users:read` | View users in your workspace |\n| `accounts:read` | View accounts (companies) in your workspace |\n| `notes:write` | Create notes on CRM-backed prospects and accounts |\n| `opportunities:read` | View opportunities (deals) in your workspace |\n| `search:read` | Search across your prospects, accounts, and other records |\n\n## Rate Limiting\nAPI requests are rate limited per workspace and per endpoint in a fixed\none-minute window. Separate endpoint buckets do not share quota, except\nroutes without an explicit limit use the shared default bucket.\n\nEvery response includes these headers:\n- `X-RateLimit-Limit` -- maximum requests allowed in the current per-minute window\n- `X-RateLimit-Remaining` -- requests remaining in the current window\n- `X-RateLimit-Reset` -- seconds until the current window resets\n\nWhen the limit is exceeded the API returns `429 Too Many Requests` with a\n`Retry-After` header indicating how many seconds to wait before retrying.\n\n**Current limits:**\n\n| Endpoint class | Methods | Limit |\n| --- | --- | --- |\n| List reads: `/sequences`, `/emails`, `/users`, `/sequenceStates`, `/prospects`, `/mailboxes`, `/calls`, `/sequenceSteps`, `/callDispositions`, `/tasks`, `/accounts` | `GET` | 300 requests/minute per endpoint |\n| Read by ID: `/sequences/{id}`, `/emails/{id}`, `/users/{id}`, `/sequenceStates/{id}`, `/prospects/{id}`, `/mailboxes/{id}`, `/calls/{id}`, `/sequenceSteps/{id}`, `/callDispositions/{id}`, `/tasks/{id}`, `/accounts/{id}`, `/emailTemplate/{id}` | `GET` | 600 requests/minute per endpoint |\n| Sequence writes: `/sequences`, `/sequences/{id}` | `POST`, `PATCH` | 120 requests/minute per endpoint |\n| Sequence state writes: `/sequenceStates`, `/sequenceStates/{id}`, `/sequenceStates/{id}/actions/finish` | `POST`, `DELETE` | 120 requests/minute per endpoint |\n| Task writes: `/tasks`, `/tasks/{id}`, `/tasks/{id}/complete`, `/tasks/{id}/skip` | `POST`, `PATCH`, `DELETE` | 120 requests/minute per endpoint |\n| CRM note writes: `/prospects/{id}/notes`, `/accounts/{id}/notes` | `POST` | 30 requests/minute per endpoint |\n| `/integrations/prospects/sync` | `POST` | 10 requests/minute |\n| Any other endpoint | Any | 30 requests/minute, shared default bucket |\n\n## Pagination\nList endpoints support cursor-based pagination using the `page[size]` and `page[after]`/`page[before]` query parameters.\n- Maximum page size: 100\n- Default page size: 50\n\n## Include (Inline Expansion)\nMost GET endpoints support an `include` query parameter that expands related `ReferenceObject` fields inline,\neliminating the need for follow-up API calls.\n\n**Format:** `?include=field1,field2` (comma-separated field names)\n\n**Without include:**\n```json\nGET /v1/prospects/123\n\n{\n  \"id\": \"123\",\n  \"sequenceStates\": [\n    { \"id\": \"ss-1\", \"_href\": \"/v1/sequenceStates/ss-1\" }\n  ]\n}\n```\n\n**With `include=sequenceStates`:**\n```json\nGET /v1/prospects/123?include=sequenceStates\n\n{\n  \"id\": \"123\",\n  \"sequenceStates\": [\n    {\n      \"id\": \"ss-1\",\n      \"_href\": \"/v1/sequenceStates/ss-1\",\n      \"state\": \"active\",\n      \"sequence\": { \"id\": \"seq-1\", \"_href\": \"/v1/sequences/seq-1\" },\n      \"prospect\": { \"id\": \"123\", \"_href\": \"/v1/prospects/123\" },\n      \"creator\": { \"id\": \"u-1\", \"_href\": \"/v1/users/u-1\" },\n      \"sequenceStep\": null,\n      \"createdAt\": \"2024-01-01T00:00:00Z\",\n      \"updatedAt\": \"2024-01-01T00:00:00Z\"\n    }\n  ]\n}\n```\n\nThe expanded object is a superset of `ReferenceObject` — it keeps `id` and `_href` and adds all DTO fields.\nThe response shape is unchanged; the field just contains richer data.\n\n**Hard constraints (enforced with 400 errors):**\n- **Max 3 includes per request.** Requesting more than 3 comma-separated values returns `400: \"include accepts at most 3 values\"`.\n- **GET endpoints only.** POST, PATCH, and DELETE endpoints do not accept `include`.\n- **No nested includes.** Only top-level field names are valid (e.g., `sequenceStates`). Dot-notation like `sequenceStates.prospect` returns 400.\n- **`account` on Prospect is not includable.** Requesting `include=account` returns 400.\n\nEach endpoint's `include` parameter lists the valid field names for that resource.\n"
  contact:
    name: Nooks API Support
    email: support@nooks.in
    url: https://www.nooks.in
  license:
    name: Proprietary
  x-logo:
    url: ./nooks-logo.svg
    altText: Nooks Logo
    href: https://www.nooks.ai
servers:
- url: https://partner-api.nooks.in/v1
  description: Production API
security:
- BearerAuth: []
tags:
- name: Tasks
  description: Manage tasks (one-off calls and email activities)
paths:
  /tasks:
    get:
      operationId: listTasks
      summary: List tasks
      description: "Returns a paginated list of tasks. Tasks represent individual outreach activities (calls, emails, etc.) assigned to users.\n\nExample:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/tasks?page[size]=50' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n\nFilter by prospect:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/tasks?filter[prospect][id]=770e8400-e29b-41d4-a716-446655440003' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n\nFilter by action type:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/tasks?filter[action]=call,manual_email' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n\nFilter by sequence:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/tasks?filter[sequence][id]=550e8400-e29b-41d4-a716-446655440000' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n\nFilter by account (joins through the task's prospect):\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/tasks?filter[account][id]=990e8400-e29b-41d4-a716-446655440099' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n"
      tags:
      - Tasks
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PageAfter'
      - $ref: '#/components/parameters/PageBefore'
      - $ref: '#/components/parameters/FilterId'
      - name: filter[sequence][id]
        in: query
        description: Filter tasks belonging to a specific sequence
        required: false
        schema:
          type: string
          format: uuid
        example: 550e8400-e29b-41d4-a716-446655440000
      - name: filter[sequenceStep][id]
        in: query
        description: Filter tasks tied to a specific sequence step
        required: false
        schema:
          type: string
          format: uuid
        example: aa0e8400-e29b-41d4-a716-446655440030
      - name: filter[prospect][id]
        in: query
        description: Filter tasks for a specific prospect
        required: false
        schema:
          type: string
          format: uuid
        example: 770e8400-e29b-41d4-a716-446655440003
      - name: filter[account][id]
        in: query
        description: 'Filter tasks associated with a specific account. Joins through

          the task''s prospect (`Prospect.accountId`).

          '
        required: false
        schema:
          type: string
          format: uuid
        example: 990e8400-e29b-41d4-a716-446655440099
      - name: filter[owner][id]
        in: query
        description: Filter tasks assigned to a specific user
        required: false
        schema:
          type: string
        example: KKLvN5wQoghWFwUvC75CZ12QM7I3
      - name: filter[action]
        in: query
        description: 'Filter by action type (comma-separated). Valid values: call, manual_email, auto_email, manual_email_reply, auto_email_reply, basic_task, linkedin_connection_request, manual_linkedin_connection_request, manual_linkedin_message, automatic_linkedin_message, manual_sms, auto_sms'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - call
            - manual_email
            - auto_email
            - manual_email_reply
            - auto_email_reply
            - basic_task
            - linkedin_connection_request
            - manual_linkedin_connection_request
            - manual_linkedin_message
            - automatic_linkedin_message
            - manual_sms
            - auto_sms
        style: form
        explode: false
        example:
        - call
        - manual_email
      - name: filter[status]
        in: query
        description: 'Filter by status (comma-separated). Valid values: pending, ready, finished, skipped, failed'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - pending
            - ready
            - finished
            - skipped
            - failed
        style: form
        explode: false
        example:
        - ready
      - name: filter[priority]
        in: query
        description: 'Filter by priority (comma-separated). Valid values: low, normal, high, urgent'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - low
            - normal
            - high
            - urgent
        style: form
        explode: false
        example:
        - high
        - urgent
      - name: filter[dueAt][gte]
        in: query
        description: Filter tasks due at or after this timestamp (ISO 8601)
        required: false
        schema:
          type: string
          format: date-time
        example: '2026-04-22T00:00:00Z'
      - name: filter[dueAt][lte]
        in: query
        description: Filter tasks due at or before this timestamp (ISO 8601)
        required: false
        schema:
          type: string
          format: date-time
        example: '2026-04-22T23:59:59Z'
      - name: filter[completed]
        in: query
        description: 'Filter by completion state. Valid values: true, false'
        required: false
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
        example: 'true'
      - name: filter[sequenceState][state]
        in: query
        description: 'Filter by the state of the task''s sequence state (comma-separated). Valid values: active, paused, finished, null. The sentinel `null` matches one-off tasks not associated with a sequence.'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - active
            - paused
            - finished
            - 'null'
        style: form
        explode: false
        example:
        - active
        - 'null'
      - name: include
        in: query
        description: 'Comma-separated relations to expand inline. Valid values: `owner`, `prospect`, `sequence`, `sequenceState`, `sequenceStep`. Max 3.'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - owner
            - prospect
            - sequence
            - sequenceState
            - sequenceStep
          maxItems: 3
        style: form
        explode: false
        example:
        - owner
        - prospect
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Task'
                  links:
                    $ref: '#/components/schemas/PaginationLinks'
              example:
                data:
                - id: dd0e8400-e29b-41d4-a716-446655440050
                  action: call
                  completed: false
                  dueAt: '2026-03-19T23:26:21.536Z'
                  note: Initial outreach call
                  status: ready
                  priority: normal
                  owner:
                    id: KKLvN5wQoghWFwUvC75CZ12QM7I3
                    _href: /v1/users/KKLvN5wQoghWFwUvC75CZ12QM7I3
                  prospect:
                    id: 770e8400-e29b-41d4-a716-446655440003
                    _href: /v1/prospects/770e8400-e29b-41d4-a716-446655440003
                  sequence:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    _href: /v1/sequences/550e8400-e29b-41d4-a716-446655440000
                  sequenceState:
                    id: 880e8400-e29b-41d4-a716-446655440010
                    _href: /v1/sequenceStates/880e8400-e29b-41d4-a716-446655440010
                  sequenceStep:
                    id: aa0e8400-e29b-41d4-a716-446655440030
                    _href: /v1/sequenceSteps/aa0e8400-e29b-41d4-a716-446655440030
                  createdAt: '2026-03-18T10:00:00.000Z'
                  updatedAt: '2026-03-18T10:00:00.000Z'
                - id: dd1e8400-e29b-41d4-a716-446655440051
                  action: call
                  completed: false
                  dueAt: '2026-03-20T15:00:00.000Z'
                  note: Follow-up call
                  status: ready
                  priority: high
                  owner:
                    id: KKLvN5wQoghWFwUvC75CZ12QM7I3
                    _href: /v1/users/KKLvN5wQoghWFwUvC75CZ12QM7I3
                  prospect:
                    id: 990e8400-e29b-41d4-a716-446655440020
                    _href: /v1/prospects/990e8400-e29b-41d4-a716-446655440020
                  sequence: null
                  sequenceState: null
                  sequenceStep: null
                  createdAt: '2026-03-18T12:00:00.000Z'
                  updatedAt: '2026-03-18T12:00:00.000Z'
                links:
                  first: https://partner-api.nooks.in/v1/tasks?page[size]=50
                  prev: null
                  next: https://partner-api.nooks.in/v1/tasks?page[size]=50&page[after]=eyJpZCI6ImRkMWU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDA1MSIsInYiOjF9
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
    post:
      operationId: createTask
      summary: Create a task
      description: "Creates a one-off task (not associated with a sequence). The task is validated and synced to CRM automatically.\n\nExample:\n```bash\ncurl -X POST 'https://partner-api.nooks.in/v1/tasks' \\\n  -H \"Authorization: Bearer nooks-api-...\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"data\": {\n      \"action\": \"call\",\n      \"dueAt\": \"2026-03-19T23:26:21.536Z\",\n      \"ownerId\": \"KKLvN5wQoghWFwUvC75CZ12QM7I3\",\n      \"prospectId\": \"770e8400-e29b-41d4-a716-446655440003\",\n      \"note\": \"Test Call\",\n      \"priority\": \"normal\"\n    }\n  }'\n```\n"
      tags:
      - Tasks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Request body for creating a task
              additionalProperties: false
              properties:
                data:
                  type: object
                  additionalProperties: false
                  properties:
                    action:
                      type: string
                      enum:
                      - call
                      - manual_email
                      - manual_email_reply
                      - basic_task
                      - linkedin_connection_request
                      - manual_linkedin_connection_request
                      - manual_linkedin_message
                      - manual_sms
                      description: Type of task action
                      example: call
                    dueAt:
                      type: string
                      format: date-time
                      description: When the task is due (ISO 8601 with timezone offset)
                      example: '2026-03-19T23:26:21.536Z'
                    ownerId:
                      type: string
                      minLength: 1
                      maxLength: 128
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                      description: ID of the user who owns this task (Firebase UID)
                      example: KKLvN5wQoghWFwUvC75CZ12QM7I3
                    prospectId:
                      type: string
                      format: uuid
                      description: ID of the prospect this task is for
                      example: 770e8400-e29b-41d4-a716-446655440003
                    note:
                      type: string
                      description: Optional note or instructions for the task
                      example: Test Call
                    priority:
                      type: string
                      enum:
                      - low
                      - normal
                      - high
                      - urgent
                      default: normal
                      description: Priority level of the task
                      example: normal
                  required:
                  - action
                  - dueAt
                  - ownerId
                  - prospectId
              required:
              - data
            example:
              data:
                action: call
                dueAt: '2026-03-19T23:26:21.536Z'
                ownerId: KKLvN5wQoghWFwUvC75CZ12QM7I3
                prospectId: 770e8400-e29b-41d4-a716-446655440003
                note: Test Call
                priority: normal
      responses:
        '201':
          description: Task successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                id: dd0e8400-e29b-41d4-a716-446655440050
                action: call
                completed: false
                dueAt: '2026-03-19T23:26:21.536Z'
                note: Test Call
                status: ready
                priority: normal
                owner:
                  id: KKLvN5wQoghWFwUvC75CZ12QM7I3
                  _href: /v1/users/KKLvN5wQoghWFwUvC75CZ12QM7I3
                prospect:
                  id: 770e8400-e29b-41d4-a716-446655440003
                  _href: /v1/prospects/770e8400-e29b-41d4-a716-446655440003
                sequence: null
                sequenceState: null
                sequenceStep: null
                createdAt: '2026-03-18T10:00:00.000Z'
                updatedAt: '2026-03-18T10:00:00.000Z'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: 'Unprocessable entity. Possible causes:

            - Task creation prerequisites not met (e.g. prospect marked Do Not Call)

            - `ownerId` is not a user in this workspace (use an id from `GET /v1/users`)

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                prospectDnc:
                  summary: Prospect is marked Do Not Call
                  value:
                    error:
                      code: UNPROCESSABLE_ENTITY
                      message: Unprocessable entity
                      details:
                        message: 'Cannot create call task: prospect has been marked as Do Not Call'
                ownerNotFound:
                  summary: Owner is not a user in the workspace
                  value:
                    error:
                      code: UNPROCESSABLE_ENTITY
                      message: Unprocessable entity
                      details:
                        message: Owner user KKLvN5wQoghWFwUvC75CZ12QM7I3 not found in this workspace. Use a user id from GET /v1/users.
        '500':
          $ref: '#/components/responses/InternalError'
  /tasks/{id}:
    get:
      operationId: getTask
      summary: Get task by ID
      description: "Returns a single task by its unique identifier.\n\nExample:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/tasks/dd0e8400-e29b-41d4-a716-446655440050' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n"
      tags:
      - Tasks
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the task
        schema:
          type: string
          format: uuid
        example: dd0e8400-e29b-41d4-a716-446655440050
      - name: include
        in: query
        description: 'Comma-separated relations to expand inline. Valid values: `owner`, `prospect`, `sequence`, `sequenceState`, `sequenceStep`. Max 3.'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - owner
            - prospect
            - sequence
            - sequenceState
            - sequenceStep
          maxItems: 3
        style: form
        explode: false
        example:
        - owner
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                id: dd0e8400-e29b-41d4-a716-446655440050
                action: call
                completed: false
                dueAt: '2026-03-19T23:26:21.536Z'
                note: Initial outreach call
                status: ready
                priority: normal
                owner:
                  id: KKLvN5wQoghWFwUvC75CZ12QM7I3
                  _href: /v1/users/KKLvN5wQoghWFwUvC75CZ12QM7I3
                prospect:
                  id: 770e8400-e29b-41d4-a716-446655440003
                  _href: /v1/prospects/770e8400-e29b-41d4-a716-446655440003
                sequence:
                  id: 550e8400-e29b-41d4-a716-446655440000
                  _href: /v1/sequences/550e8400-e29b-41d4-a716-446655440000
                sequenceState:
                  id: 880e8400-e29b-41d4-a716-446655440010
                  _href: /v1/sequenceStates/880e8400-e29b-41d4-a716-446655440010
                sequenceStep:
                  id: aa0e8400-e29b-41d4-a716-446655440030
                  _href: /v1/sequenceSteps/aa0e8400-e29b-41d4-a716-446655440030
                createdAt: '2026-03-18T10:00:00.000Z'
                updatedAt: '2026-03-18T10:00:00.000Z'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    patch:
      operationId: updateTask
      summary: Update a task
      description: "Updates one or more fields on an existing task.\n\n**Updatable fields only** — only the following fields can be changed:\n- `dueAt` — reschedule the task to a new due date/time\n- `ownerId` — reassign the task to a different user\n- `priority` — change the task priority (`low`, `normal`, `high`, `urgent`)\n- `note` — update the task note (set to `null` to clear)\n\nAt least one field must be provided. All other task fields (action, prospect, sequence, etc.) are immutable through this endpoint.\n\nExample (reschedule):\n```bash\ncurl -X PATCH 'https://partner-api.nooks.in/v1/tasks/dd0e8400-e29b-41d4-a716-446655440050' \\\n  -H \"Authorization: Bearer nooks-api-...\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"data\": {\"dueAt\": \"2026-04-01T09:00:00.000Z\"}}'\n```\n\nExample (reassign + reprioritize):\n```bash\ncurl -X PATCH 'https://partner-api.nooks.in/v1/tasks/dd0e8400-e29b-41d4-a716-446655440050' \\\n  -H \"Authorization: Bearer nooks-api-...\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"data\": {\"ownerId\": \"ABC123\", \"priority\": \"high\"}}'\n```\n"
      tags:
      - Tasks
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the task
        schema:
          type: string
          format: uuid
        example: dd0e8400-e29b-41d4-a716-446655440050
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Fields to update on the task. At least one field is required.
              additionalProperties: false
              required:
              - data
              properties:
                data:
                  type: object
                  description: 'The fields to update. Only `dueAt`, `ownerId`, `priority`, and `note` are

                    accepted — all other fields are rejected. At least one must be provided.

                    '
                  minProperties: 1
                  additionalProperties: false
                  properties:
                    dueAt:
                      type: string
                      format: date-time
                      description: New due date/time for the task (ISO 8601 with timezone offset)
                      example: '2026-04-01T09:00:00.000Z'
                    ownerId:
                      type: string
                      minLength: 1
                      maxLength: 128
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                      description: ID of the user to reassign the task to (Firebase UID)
                      example: KKLvN5wQoghWFwUvC75CZ12QM7I3
                    priority:
                      type: string
                      enum:
                      - low
                      - normal
                      - high
                      - urgent
                      description: New priority level for the task
                      example: high
                    note:
                      type: string
                      nullable: true
                      description: Updated note for the task. Set to null to clear.
                      example: Follow up after the demo
            example:
              data:
                dueAt: '2026-04-01T09:00:00.000Z'
                priority: high
      responses:
        '200':
          description: Task successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                id: dd0e8400-e29b-41d4-a716-446655440050
                action: call
                completed: false
                dueAt: '2026-04-01T09:00:00.000Z'
                note: Follow up after the demo
                status: ready
                priority: high
                owner:
                  id: KKLvN5wQoghWFwUvC75CZ12QM7I3
                  _href: /v1/users/KKLvN5wQoghWFwUvC75CZ12QM7I3
                prospect:
                  id: 770e8400-e29b-41d4-a716-446655440003
                  _href: /v1/prospects/770e8400-e29b-41d4-a716-446655440003
                sequence: null
                sequenceState: null
                sequenceStep: null
                createdAt: '2026-03-18T10:00:00.000Z'
                updatedAt: '2026-04-01T08:45:00.000Z'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: 'Unprocessable entity. Possible causes:

            - The update violates task business rules

            - `ownerId` is not a user in this workspace (use an id from `GET /v1/users`)

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                ownerNotFound:
                  summary: New owner is not a user in the workspace
                  value:
                    error:
                      code: UNPROCESSABLE_ENTITY
                      message: Unprocessable entity
                      details:
                        message: Owner user KKLvN5wQoghWFwUvC75CZ12QM7I3 not found in this workspace. Use a user id from GET /v1/users.
        '500':
          $ref: '#/components/responses/InternalError'
    delete:
      operationId: deleteTask
      summary: Delete a task
      description: "Permanently deletes a task. If the task belongs to an active sequence enrollment,\nthe sequence is automatically advanced to the next step (or finished if it was the\nlast step) before deletion.\n\nExample:\n```bash\ncurl -X DELETE 'https://partner-api.nooks.in/v1/tasks/dd0e8400-e29b-41d4-a716-446655440050' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n"
      tags:
      - Tasks
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the task to delete
        schema:
          type: string
          format: uuid
        example: dd0e8400-e29b-41d4-a716-446655440050
      responses:
        '204':
          description: Task successfully deleted (no content)
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalError'
  /tasks/{id}/complete:
    post:
      operationId: completeTask
      summary: Complete a task
      description: "Marks a task as completed. This triggers CRM sync and, for sequence tasks,\nautomatically advances the prospect to the next step in the sequence.\n\nExample:\n```bash\ncurl -X POST 'https://partner-api.nooks.in/v1/tasks/dd0e8400-e29b-41d4-a716-446655440050/complete' \\\n  -H \"Authorization: Bearer nooks-api-...\"\n```\n"
      tags:
      - Tasks
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the task to complete
        schema:
          type: string
          format: uuid
        example: dd0e8400-e29b-41d4-a716-446655440050
      responses:
        '200':
          

# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nooks/refs/heads/main/openapi/nooks-tasks-api-openapi.yml