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

# Update a draft

> Updates properties of a writing assistant draft.



## OpenAPI

````yaml PUT /v4/accounts/{accountId}/drafts/{draftId}
openapi: 3.1.0
info:
  title: Conductor API Documentation
  version: 4.0.0
  license:
    name: Conductor terms of service
    url: https://www.conductor.com/legal/
  termsOfService: https://www.conductor.com/legal/
  x-logo:
    url: https://app.conductor.com/images/global/logo_login.png
servers:
  - url: https://api.conductor.com
security:
  - ApiKeyAuth: []
    SigAuth: []
tags:
  - name: Draft Management
    description: Create, retrieve, update, and delete Writing Assistant drafts.
  - name: Content Insights
    description: >-
      Request and retrieve AI-driven content insights and recommendations for a
      draft.
  - name: Content Generation
    description: >-
      Generate and revise content assets — outlines, drafts, meta descriptions,
      title tags, outline expansions, and shortened text.
  - name: Content Guidance
    description: >-
      Validate and guide content against target keywords and optimization
      criteria.
  - name: Content Score
    description: >-
      Evaluate on-page content and return scoring insights across intent
      alignment and topical coverage.
  - name: Content Profile
    description: >-
      Create, retrieve, update, and delete reusable voice, tone, and
      language-rule profiles applied to draft generation.
  - name: Internal Linking
    description: >-
      Get anchor text and URL recommendations for internal linking based on a
      customer's embedded pages.
paths:
  /v4/accounts/{accountId}/drafts/{draftId}:
    put:
      tags:
        - Draft Management
      summary: Update a draft
      description: Updates properties of a writing assistant draft.
      operationId: updateDraft
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            type: integer
          description: Account identifier
        - name: draftId
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Draft identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WritingAssistantDraftUpdateInput'
            example:
              draftTitle: Updated Draft
              phrases:
                - Updated phrases
              competitorUrls:
                - https://www.example.com/data-integration
                - https://www.example.org/guides/data-integration-tools
              title: Updated title
              metaDescription: Updated meta description
              bodyCopy: Updated body copy
      responses:
        '200':
          description: Updated draft
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WritingAssistantDraft'
        '400':
          description: >-
            Invalid draft parameters: fewer than the minimum required competitor
            URLs, or phrase topic limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpringBootErrorResponse'
        '401':
          description: Missing or invalid API key/signature.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: The account's subscription does not permit this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpringBootErrorResponse'
        '403':
          description: >-
            Caller does not have access to this account, or the draft belongs to
            a different account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpringBootErrorResponse'
        '404':
          description: Draft not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpringBootErrorResponse'
components:
  schemas:
    WritingAssistantDraftUpdateInput:
      type: object
      description: Fields that can be updated on a writing assistant draft.
      properties:
        draftTitle:
          type: string
          description: 'Draft title. (Note: not your page''s title tag)'
        phrases:
          type: array
          items:
            type: string
          description: Target keyword phrases the draft is optimized for.
        competitorUrls:
          type: array
          items:
            type: string
            format: uri
          description: Competitor URLs used to generate insights from for this draft.
        title:
          type: string
        metaDescription:
          type: string
        bodyCopy:
          type: string
        contentProfileId:
          type: string
          format: uuid
          description: Content Profile identifier.
        referenceDocumentIds:
          type: array
          items:
            type: string
            format: uuid
          description: Reference Document identifiers.
        page:
          type: string
          description: Existing page to optimize in your draft.
    WritingAssistantDraft:
      type: object
      properties:
        accountId:
          type: integer
          description: Account identifier.
        id:
          type: string
          format: uuid
          description: Draft identifier
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        draftTitle:
          type: string
          description: 'Draft title. (Note: not your page''s title tag)'
        phrases:
          type: array
          items:
            type: string
          description: Target keyword phrases the draft is optimized for.
        page:
          type: string
          description: Existing page to optimize in your draft.
        rankSourceId:
          type: integer
          description: Rank source identifier.
        webPropertyId:
          type: integer
          description: Web property identifier.
        versionId:
          type: string
          description: Identifier of the specific draft version.
        title:
          type: string
        metaDescription:
          type: string
        bodyCopy:
          type: string
          description: The body copy / main text content of the draft.
        created:
          type: string
          format: date-time
          description: created timestamp
          example: '2026-06-28T23:19:03.026-04:00'
        createdBy:
          type: integer
        updated:
          type: string
          format: date-time
          description: last updated timestamp
          example: '2026-06-28T23:19:03.026-04:00'
        updatedBy:
          type: integer
          description: User id of the last user to make an update.
        assignee:
          type: integer
          description: User id of the user assigned to this draft.
        status:
          type: string
          description: Draft status.
          enum:
            - TO_DO
            - IN_PROGRESS
            - IN_REVIEW
            - APPROVED
            - PUBLISHED
        competitorUrls:
          type: array
          items:
            type: string
          description: Competitor URLs used to generate insights from for this draft.
        contentProfileId:
          type: string
          format: uuid
          description: Content Profile identifier.
    SpringBootErrorResponse:
      type: object
      description: >-
        Default error body returned by the Spring Boot backends (sage-history,
        content-guidance, serp-explorer) for unhandled/framework-level errors.
        Not endpoint-specific.
      properties:
        timestamp:
          type: string
          format: date-time
        status:
          type: integer
        error:
          type: string
          description: HTTP reason phrase, e.g. "Bad Request".
        message:
          type: string
          nullable: true
          description: >-
            Often empty; these backends do not consistently populate a detail
            message.
        path:
          type: string
    Error:
      type: object
      description: >-
        Error envelope for failures that apply uniformly across all v4 endpoints
        (e.g. gateway-level authentication failures).
      properties:
        code:
          type: string
          description: Machine-readable error code.
        message:
          type: string
          description: Human-readable error description.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: apiKey
      description: API Key as a query parameter
    SigAuth:
      type: apiKey
      in: query
      name: sig
      description: >-
        Request signature computed using API key and secret. Valid for 5 minutes
        after creation.

````