> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a one-off task

> A standalone to-do for a contact, not tied to any cadence. It lands in the same queue as cadence tasks and is told apart by `origin: one_off`.

A standalone to-do for a contact, not tied to any cadence. It lands in the same queue as cadence tasks and is told apart by `origin: one_off`.


## OpenAPI

````yaml POST /v2/sequencer/tasks
openapi: 3.0.1
info:
  title: Salesfinity API
  description: >-
    The Salesfinity API is a JSON-over-HTTPS REST API for the Salesfinity
    parallel dialer.

    Use it to manage contact lists, read call logs and AI call scores, pull team
    and SDR

    analytics, and enrich email addresses. Webhook subscriptions are managed in
    the

    Salesfinity application rather than through this API.


    ## Base URL


    All requests go to `https://client-api.salesfinity.co`. There is no separate
    sandbox host;

    see the developer portal for the recommended way to test safely.


    ## Authentication


    Every endpoint requires an API key sent in the `x-api-key` request header.
    Generate a key

    in the Salesfinity dashboard under **Settings -> Connections & API**. A key
    is scoped to a

    single team, and every response is filtered to that team.


    ```bash

    curl https://client-api.salesfinity.co/v1/team \
      --header 'x-api-key: YOUR_API_KEY'
    ```


    ## Errors


    Errors are always JSON and always use the same envelope, so a client can
    parse a failure

    the same way on every endpoint:


    ```json

    { "message": "Forbidden resource", "error": "Forbidden", "statusCode": 403 }

    ```


    `statusCode` matches the HTTP status. `error` is the stable reason phrase to
    branch on.

    `message` is human readable, and is an array of strings when request
    validation fails.

    Note that a missing or invalid API key returns **403**, not 401.


    ## Pagination


    List endpoints accept `page` (1-based) and `limit` query parameters and
    return the matching

    page alongside the total count. The `limit` default varies by endpoint (10,
    50, or 100) and

    is capped at 100 where a cap applies, so read the parameter schema on the
    operation itself.


    ## Rate limits


    Salesfinity does not currently publish a fixed request quota. Treat HTTP 429
    as retryable

    and back off with exponential jitter.
  version: 1.0.0
  termsOfService: https://salesfinity.ai/terms
  contact:
    name: Salesfinity Support
    email: hello@salesfinity.co
    url: https://support.salesfinity.ai
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://client-api.salesfinity.co
    description: Production. The only public Salesfinity API host.
security:
  - ApiKeyAuth: []
tags:
  - name: Contact Lists
    description: >-
      Create, read, merge, and delete CSV contact lists, and add or remove the
      contacts inside them.
  - name: Teams
    description: >-
      Read the team that owns the API key, including its members, licenses, and
      statuses.
  - name: Dispositions
    description: Read the default and custom call outcomes configured for the team.
  - name: Sequences
    description: Read the sequences referenced by the team's call logs.
  - name: Call Logs
    description: >-
      Read the raw call history for the team, with filtering, sorting, and
      pagination.
  - name: Analytics
    description: Aggregated call metrics for the team, by contact list, and by SDR.
  - name: Snoozed Contacts
    description: Read and manage contacts that have been snoozed out of the dialing queue.
  - name: Follow-up Tasks
    description: Read follow-up tasks created from call outcomes.
  - name: Custom Fields
    description: Read the custom field mappings configured for the team.
  - name: Scored Calls
    description: Read AI-scored calls with per-facet scoring and coaching recommendations.
  - name: Notes
    description: >-
      Attach freeform notes to a person or company, list them, and pin the ones
      that matter.
  - name: Enrichment
    description: >-
      Look up phone numbers and work or personal email addresses for a LinkedIn
      profile, and check the team's remaining enrichment credits.
  - name: Sequencer Sequences
    description: >-
      Create, configure, enable and duplicate Sequencer cadences, and read their
      analytics. Distinct from the Sequences group, which lists sequence names
      observed on call logs from an external CRM.
  - name: Sequencer Steps
    description: The ordered steps that make up a cadence.
  - name: Sequencer Templates
    description: Reusable email subjects and bodies that email steps send from.
  - name: Sequencer Enrollments
    description: >-
      Contacts inside a sequence: where they are in the cadence, and the verbs
      that move them.
  - name: Sequencer Enrolment Runs
    description: >-
      Background enrolment of large batches, and the preview that shows what a
      batch would do.
  - name: Sequencer Tasks
    description: The rep task queue a cadence produces, plus standalone one-off tasks.
  - name: Sequencer Suppression
    description: >-
      The team do-not-contact list, checked before every enrolment and every
      send.
  - name: Sequencer Policies
    description: 'Rules of engagement: what may be enrolled, and what happens at each step.'
  - name: Sequencer Settings
    description: Team-level sequencer settings and sending mailboxes. Read-only.
externalDocs:
  description: Salesfinity API documentation
  url: https://docs.salesfinity.ai
paths:
  /v2/sequencer/tasks:
    post:
      tags:
        - Sequencer Tasks
      summary: Create a one-off task
      description: >-
        A standalone to-do for a contact, not tied to any cadence. It lands in
        the same queue as cadence tasks and is told apart by `origin: one_off`.
      operationId: create-sequencer-task
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaskDTO'
      responses:
        '201':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SequencerTask'
        '400':
          description: >-
            Validation failed. Check the request body and query parameters
            against the schema on this operation. `message` lists every field
            that failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message:
                  - limit must not be greater than 100
                error: Bad Request
                statusCode: 400
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    CreateTaskDTO:
      type: object
      properties:
        user_id:
          type: string
          description: >-
            The team member this call acts as. Must be an active member of the
            team the API key belongs to.
          example: 507f1f77bcf86cd799439011
        action:
          type: string
          enum:
            - call
            - manual_email
            - generic
            - linkedin_connect
            - linkedin_message
            - linkedin_view
            - linkedin_interact
            - meeting
            - sms
        due_at:
          format: date-time
          type: string
          description: >-
            ISO 8601, and must be in the future. Values more than 365 days out
            are rejected, and so is a value already in the past — with a few
            minutes of slack, so a client computing "now" is not caught out by
            its own request latency.
        priority:
          type: string
          enum:
            - high
            - medium
            - low
          default: medium
        assignee_id:
          type: string
          description: Assignee. Defaults to `user_id`.
        subject:
          type: string
        note:
          type: string
        contact:
          type: string
          description: The contact the task is about.
      required:
        - user_id
        - action
        - due_at
        - contact
    SequencerTask:
      type: object
      description: A task in a rep queue.
      properties:
        _id:
          type: string
          description: 24-character hexadecimal id.
          example: 507f1f77bcf86cd799439011
        user:
          type: string
          description: Assignee.
        contact:
          type: string
          description: 24-character hexadecimal id.
          example: 507f1f77bcf86cd799439011
        sequence:
          type: string
          nullable: true
          description: Absent on a one-off task.
        sequence_step:
          type: string
          nullable: true
        origin:
          type: string
          enum:
            - sequence
            - one_off
        action:
          type: string
          enum:
            - call
            - manual_email
            - generic
            - linkedin_connect
            - linkedin_message
            - linkedin_view
            - linkedin_interact
            - meeting
            - sms
        state:
          type: string
          enum:
            - pending
            - held
            - completed
            - skipped
            - expired
            - cancelled
        priority:
          type: string
          enum:
            - high
            - medium
            - low
        subject:
          type: string
          nullable: true
        note:
          type: string
          nullable: true
        due_at:
          type: string
          format: date-time
          description: When the task is due.
        autoskip_at:
          type: string
          format: date-time
          nullable: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        call_log:
          type: string
          nullable: true
          description: Set when a call task was resolved by a logged call.
    Error:
      type: object
      title: Error
      description: >-
        The error envelope returned by every Salesfinity API error response. The
        shape is identical across all status codes and all endpoints.
      required:
        - message
        - error
        - statusCode
      properties:
        message:
          description: >-
            Human-readable description of the failure. A string for most errors,
            and an array of strings when request validation fails, with one
            entry per field that did not validate.
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          example: Forbidden resource
        error:
          type: string
          description: >-
            Stable HTTP reason phrase for the status code. Branch on this rather
            than on `message`.
          example: Forbidden
        statusCode:
          type: integer
          format: int32
          description: >-
            HTTP status code, repeated in the body so it survives transports
            that drop it.
          example: 403
      example:
        message: Forbidden resource
        error: Forbidden
        statusCode: 403
  responses:
    Forbidden:
      description: >-
        Forbidden. The `x-api-key` header is missing, malformed, revoked, or
        belongs to another team. Send a valid key in the `x-api-key` header.
        Salesfinity returns 403 (not 401) for a missing, malformed, revoked, or
        wrong-team key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Forbidden resource
            error: Forbidden
            statusCode: 403
    TooManyRequests:
      description: >-
        Too Many Requests. The client is being throttled and should retry with
        backoff. Back off and retry with exponential jitter. Treat 429 as
        retryable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Too many requests
            error: Too Many Requests
            statusCode: 429
    InternalServerError:
      description: >-
        Internal Server Error. Something went wrong on the Salesfinity side.
        Retry with exponential backoff. If it persists, contact
        hello@salesfinity.co with the request path and timestamp.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Internal server error
            error: Internal Server Error
            statusCode: 500
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Team-scoped API key generated in the Salesfinity dashboard under
        Settings -> Connections & API. A missing or invalid key returns HTTP
        403.

````