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

# Schedule a Social Selling draft

> Schedules exactly the approved `version` of a draft at `scheduledAt` (ISO instant), at `localDateTime` in `timezone` (IANA, daylight-saving aware), or with `publishNow` (about a minute from now). The draft is locked to that version first (a concurrent edit or second schedule answers 409), then published through the same flow as the app: owner confirmation email, teammate-consent rules for the first comment (it may wait for the owner’s approval), reactions from the pool. The first comment goes on the published post 30 seconds after it is live. Answers the publication (`status` SCHEDULED; it becomes PUBLISHED only once LinkedIn returned the post — poll `get_social_selling_publication_status`). Pass `idempotencyKey` so a retry after a timeout returns the same publication instead of scheduling twice.

    > **Required scope:** `SOCIAL_SELLING_WRITE`
    >
    > **Rate limit:** 10 requests per minute



## OpenAPI

````yaml https://openapi.enginy.ai/definitions.json post /v1/social-selling/drafts/{draftId}/schedule
openapi: 3.1.0
info:
  title: Enginy API
  version: 1.0.0
  description: Public API for Enginy platform
servers:
  - url: https://openapi.enginy.ai
    description: Configured server
security: []
tags:
  - name: AI Variables
    description: >-
      Manage AI variables and discover the entity fields you can reference in
      prompts and entity requests.
  - name: Inbox
    description: >-
      Inbox endpoints for listing contact threads, reading thread messages,
      managing tags, and sending manual replies.
  - name: Workflows
    description: >-
      Build, validate, publish, run, and inspect advanced (graph) workflows,
      plus the block/condition catalog needed to author a workflow plan.
paths:
  /v1/social-selling/drafts/{draftId}/schedule:
    post:
      tags:
        - Social Selling
      summary: Schedule a Social Selling draft
      description: >-
        Schedules exactly the approved `version` of a draft at `scheduledAt`
        (ISO instant), at `localDateTime` in `timezone` (IANA, daylight-saving
        aware), or with `publishNow` (about a minute from now). The draft is
        locked to that version first (a concurrent edit or second schedule
        answers 409), then published through the same flow as the app: owner
        confirmation email, teammate-consent rules for the first comment (it may
        wait for the owner’s approval), reactions from the pool. The first
        comment goes on the published post 30 seconds after it is live. Answers
        the publication (`status` SCHEDULED; it becomes PUBLISHED only once
        LinkedIn returned the post — poll
        `get_social_selling_publication_status`). Pass `idempotencyKey` so a
        retry after a timeout returns the same publication instead of scheduling
        twice.

            > **Required scope:** `SOCIAL_SELLING_WRITE`
            >
            > **Rate limit:** 10 requests per minute
      parameters:
        - schema:
            type: integer
            exclusiveMinimum: 0
            description: Draft id (`draftId`).
          required: true
          description: Draft id (`draftId`).
          name: draftId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                version:
                  type: integer
                  exclusiveMinimum: 0
                  description: >-
                    The version you previewed and approve. An edited draft
                    answers 409 `VERSION_CONFLICT`.
                scheduledAt:
                  type: string
                  format: date-time
                  description: >-
                    ISO 8601 instant with offset. Give exactly one of
                    `scheduledAt`, `localDateTime` + `timezone`, `publishNow`.
                  example: '2026-11-03T08:30:00Z'
                localDateTime:
                  type: string
                  pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?$
                  description: >-
                    Wall-clock time in `timezone`, without offset. A time
                    skipped by daylight saving answers 400; a repeated one means
                    its first occurrence.
                  example: 2026-11-03T09:30
                timezone:
                  type: string
                  minLength: 1
                  maxLength: 64
                  description: IANA zone.
                  example: Europe/Madrid
                publishNow:
                  type: boolean
                  description: Publish about a minute from now.
                reactionsAmount:
                  type: integer
                  minimum: 0
                  maximum: 500
                  description: >-
                    Reactions from the workspace’s identity pool once live.
                    Default 0.
                reactionTypes:
                  type: array
                  items:
                    type: string
                    enum:
                      - LIKE
                      - PRAISE
                      - EMPATHY
                      - INTEREST
                      - APPRECIATION
                      - ENTERTAINMENT
                  minItems: 1
                idempotencyKey:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: >-
                    Any unique string per intended schedule. A retry with the
                    same key returns the first answer (`replayed: true`) instead
                    of scheduling twice. The `Idempotency-Key` header works too.
                shareOnSlack:
                  type: boolean
                  description: >-
                    Also announce the post in the workspace’s Social Selling
                    Slack channel once it is live on LinkedIn. Ignored when the
                    workspace has no Social Selling Slack channel. Default
                    false.
              required:
                - version
      responses:
        '201':
          description: Scheduled (or the replayed earlier answer)
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      draft:
                        type: object
                        properties:
                          draftId:
                            type: number
                          version:
                            type: number
                            description: >-
                              Bumped by every edit. Pass it to schedule
                              (approval) and update.
                          status:
                            type: string
                            enum:
                              - DRAFT
                              - SCHEDULED
                              - PUBLISHED
                              - FAILED
                              - CANCELLED
                              - ARCHIVED
                          identity:
                            type: object
                            properties:
                              id:
                                type: number
                              name:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - id
                              - name
                          title:
                            type:
                              - string
                              - 'null'
                          text:
                            type: string
                          mentions:
                            type: array
                            items:
                              type: object
                              properties:
                                start:
                                  type: integer
                                  minimum: 0
                                  description: >-
                                    Offset in Unicode code points (an emoji
                                    counts as one).
                                length:
                                  type: integer
                                  minimum: 1
                                kind:
                                  type: string
                                  enum:
                                    - PROFILE
                                    - COMPANY
                                urn:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    `urn:li:fsd_profile:<id>` for a person,
                                    `urn:li:fsd_company:<id>` for a company
                                    page.
                                  example: urn:li:fsd_company:98422414
                                label:
                                  type: string
                                  minLength: 1
                                  description: Exactly the mentioned slice of `text`.
                              required:
                                - start
                                - length
                                - kind
                                - urn
                                - label
                              description: >-
                                A mention: the slice `text[start, start+length)`
                                links to `urn`.
                          attachments:
                            type: array
                            items:
                              type: object
                              properties:
                                assetId:
                                  type: string
                                position:
                                  type: number
                                  description: 0-based order in the post (or draft).
                                origin:
                                  type: string
                                  enum:
                                    - POST
                                    - REPOSTED_POST
                                    - UPLOAD
                                type:
                                  type: string
                                  enum:
                                    - IMAGE
                                    - VIDEO
                                    - DOCUMENT
                                    - ARTICLE
                                    - POLL
                                    - CELEBRATION
                                    - REFERENCE
                                mimeType:
                                  type:
                                    - string
                                    - 'null'
                                width:
                                  type:
                                    - number
                                    - 'null'
                                height:
                                  type:
                                    - number
                                    - 'null'
                                sizeBytes:
                                  type:
                                    - number
                                    - 'null'
                                durationMs:
                                  type:
                                    - number
                                    - 'null'
                                pageCount:
                                  type:
                                    - number
                                    - 'null'
                                title:
                                  type:
                                    - string
                                    - 'null'
                                description:
                                  type:
                                    - string
                                    - 'null'
                                altText:
                                  type:
                                    - string
                                    - 'null'
                                altTextSource:
                                  type:
                                    - string
                                    - 'null'
                                  enum:
                                    - AUTHOR
                                    - UPLOADER
                                    - null
                                  description: >-
                                    Who wrote `altText`. Alt text is never
                                    generated by Enginy.
                                linkUrl:
                                  type:
                                    - string
                                    - 'null'
                                  description: The link of an article or reference card.
                                pollOptions:
                                  type:
                                    - array
                                    - 'null'
                                  items:
                                    type: string
                                transcript:
                                  type: object
                                  properties:
                                    status:
                                      type: string
                                      enum:
                                        - NOT_COLLECTED
                                  required:
                                    - status
                                  description: >-
                                    Video captions and transcripts are not
                                    collected from LinkedIn.
                                access:
                                  type: object
                                  properties:
                                    status:
                                      type: string
                                      enum:
                                        - AVAILABLE
                                        - EXPIRING
                                        - EXPIRED
                                        - UNAVAILABLE
                                        - PENDING_UPLOAD
                                        - NOT_DOWNLOADABLE
                                      description: >-
                                        AVAILABLE: `downloadUrl` serves the
                                        file. EXPIRING: served by LinkedIn until
                                        `expiresAt` (refresh for a durable
                                        copy). EXPIRED / UNAVAILABLE: no working
                                        URL (`reason` says why; refresh).
                                        PENDING_UPLOAD: upload not completed.
                                        NOT_DOWNLOADABLE: no file (poll, link
                                        card).
                                    downloadUrl:
                                      type:
                                        - string
                                        - 'null'
                                      description: >-
                                        HTTPS URL of the original file. Any HTTP
                                        client can GET it without a login,
                                        cookies or headers. Null unless
                                        AVAILABLE or EXPIRING.
                                    previewUrl:
                                      type:
                                        - string
                                        - 'null'
                                      description: >-
                                        A smaller rendition to look at (the
                                        image itself; video/document thumbnail).
                                    expiresAt:
                                      type:
                                        - string
                                        - 'null'
                                      description: >-
                                        When `downloadUrl` stops working (null =
                                        durable).
                                    durable:
                                      type: boolean
                                      description: >-
                                        True when `downloadUrl` is Enginy’s
                                        durable copy.
                                    refreshable:
                                      type: boolean
                                      description: >-
                                        True when
                                        `refresh_social_selling_media_access`
                                        can improve it.
                                    verifiedAt:
                                      type:
                                        - string
                                        - 'null'
                                      description: >-
                                        When Enginy confirmed the URL serves the
                                        file (null = not probed).
                                    reason:
                                      type:
                                        - string
                                        - 'null'
                                  required:
                                    - status
                                    - downloadUrl
                                    - previewUrl
                                    - expiresAt
                                    - durable
                                    - refreshable
                                    - verifiedAt
                                    - reason
                                source:
                                  type:
                                    - object
                                    - 'null'
                                  properties:
                                    trackedPostId:
                                      type: number
                                    position:
                                      type: number
                                    credit:
                                      type:
                                        - string
                                        - 'null'
                                  required:
                                    - trackedPostId
                                    - position
                                    - credit
                                  description: >-
                                    For a copy of a post’s media: where it came
                                    from and its credit.
                              required:
                                - assetId
                                - position
                                - origin
                                - type
                                - mimeType
                                - width
                                - height
                                - sizeBytes
                                - durationMs
                                - pageCount
                                - title
                                - description
                                - altText
                                - altTextSource
                                - linkUrl
                                - pollOptions
                                - transcript
                                - access
                                - source
                          firstComment:
                            type:
                              - string
                              - 'null'
                          visibility:
                            type: string
                            enum:
                              - ANYONE
                              - CONNECTIONS
                          postAsCompany:
                            type: boolean
                          companyUrn:
                            type:
                              - string
                              - 'null'
                          lineage:
                            type: object
                            properties:
                              sourcePostId:
                                type:
                                  - number
                                  - 'null'
                                description: Tracked post it was adapted from.
                              sourceDraftId:
                                type:
                                  - number
                                  - 'null'
                              sourceAttribution:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - sourcePostId
                              - sourceDraftId
                              - sourceAttribution
                          planning:
                            type: object
                            properties:
                              series:
                                type:
                                  - string
                                  - 'null'
                              pillar:
                                type:
                                  - string
                                  - 'null'
                              objective:
                                type:
                                  - string
                                  - 'null'
                              audience:
                                type:
                                  - string
                                  - 'null'
                              factualSources:
                                type: array
                                items:
                                  type: string
                              notes:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - series
                              - pillar
                              - objective
                              - audience
                              - factualSources
                              - notes
                          schedule:
                            type:
                              - object
                              - 'null'
                            properties:
                              publishingPostId:
                                type: number
                              scheduledVersion:
                                type: number
                              scheduledAt:
                                type: string
                              timezone:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - publishingPostId
                              - scheduledVersion
                              - scheduledAt
                              - timezone
                          createdById:
                            type:
                              - number
                              - 'null'
                          updatedById:
                            type:
                              - number
                              - 'null'
                          createdAt:
                            type: string
                          updatedAt:
                            type: string
                        required:
                          - draftId
                          - version
                          - status
                          - identity
                          - title
                          - text
                          - mentions
                          - attachments
                          - firstComment
                          - visibility
                          - postAsCompany
                          - companyUrn
                          - lineage
                          - planning
                          - schedule
                          - createdById
                          - updatedById
                          - createdAt
                          - updatedAt
                      publication:
                        type: object
                        properties:
                          publishingPostId:
                            type: number
                          draftId:
                            type:
                              - number
                              - 'null'
                          draftVersion:
                            type:
                              - number
                              - 'null'
                          identityId:
                            type:
                              - number
                              - 'null'
                          status:
                            type: string
                            enum:
                              - SCHEDULED
                              - PUBLISHING
                              - PUBLISHED
                              - FAILED
                              - UNCERTAIN
                              - CANCELLED
                            description: >-
                              PUBLISHED only once LinkedIn returned the post.
                              UNCERTAIN: the provider call ended without a
                              readable answer or the time passed with no outcome
                              — check the feed, never blindly retry.
                          scheduledAt:
                            type:
                              - string
                              - 'null'
                          publishedAt:
                            type:
                              - string
                              - 'null'
                          linkedinUrl:
                            type:
                              - string
                              - 'null'
                          linkedinPostUrn:
                            type:
                              - string
                              - 'null'
                          trackedPostId:
                            type:
                              - number
                              - 'null'
                            description: Set once the sync tracks it (metrics, comments).
                          error:
                            type:
                              - string
                              - 'null'
                          firstComment:
                            type:
                              - object
                              - 'null'
                            properties:
                              scheduledCommentId:
                                type: number
                              status:
                                type: string
                                enum:
                                  - QUEUED
                                  - PENDING_APPROVAL
                                  - POSTED
                                  - REJECTED
                                  - CANCELLED
                              commentUrn:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - scheduledCommentId
                              - status
                              - commentUrn
                          appUrl:
                            type: string
                        required:
                          - publishingPostId
                          - draftId
                          - draftVersion
                          - identityId
                          - status
                          - scheduledAt
                          - publishedAt
                          - linkedinUrl
                          - linkedinPostUrn
                          - trackedPostId
                          - error
                          - firstComment
                          - appUrl
                      replayed:
                        type: boolean
                        description: >-
                          True when this answer replays an earlier request with
                          the same key.
                    required:
                      - draft
                      - publication
                      - replayed
                required:
                  - status
                  - message
                  - data
        '400':
          description: >-
            Invalid or missing publish time (`PUBLISH_TIME_TOO_SOON`, a time
            skipped by daylight saving, …), media rejected by the publisher
        '403':
          description: >-
            Social Selling is not enabled for this workspace. Ask your workspace
            admin to enable the feature. Also: the identity’s owner does not let
            the caller comment from it (first comment).
        '404':
          description: >-
            Draft not found in this workspace or outside the caller’s identity
            scope
        '409':
          description: >-
            `VERSION_CONFLICT` (the draft changed: re-read it),
            `DRAFT_NOT_EDITABLE` / `ALREADY_SCHEDULED` (unschedule first),
            `IDEMPOTENCY_KEY_REUSED`, `PUBLICATION_STARTED` — `details` carries
            the current version or publication
        '503':
          description: >-
            The post could not be scheduled right now; the draft is still a
            DRAFT
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.