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

# Update Company Profile

> Update company profile

**CLI:**

```bash theme={null}
puffle context update --context <context>
puffle context update --context <context> --profile <profile>
```

## Overview

Replaces the workspace's full company profile: user background, company positioning, content plan, and ICP/market context. The body is validated as a complete profile object; partial updates are rejected.

Use this when setup or a human edit changes the profile that downstream workflows should use. The response returns the newly persisted full context.

## AI agent notes

Fetch [Get Company Profile](/api-reference/accounts/list-context) first, apply the user's requested edits locally, and PUT the complete object back. Preserve every section the user did not ask to change.

Do not synthesize ICP, company, or voice details without user-provided source material. If the user only gives a small correction, update that field and keep the rest of the current context intact.


## OpenAPI

````yaml put /api/context
openapi: 3.0.3
info:
  title: Puffle API
  version: 1.0.0
  description: >-
    HTTP API for the Puffle GTM platform - Feed and Lead Finder search
    preparation, campaign-backed Outbound execution, Puffle Agent runs, sender
    management, and Unibox reply workflows. Designed for operation by both
    humans and autonomous AI agents. Agents should start at the [Agent
    Playbook](/guides/agent-playbook) which prescribes a workspace-context check
    (`GET /api/context`) and core user journeys with exact call ordering.
  contact:
    name: Puffle Support
    url: https://puffle.ai
servers:
  - url: https://app.puffle.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Campaigns
    description: >-
      Campaign-backed Outbound execution. These endpoints manage draft,
      launching, active, paused, and completed Outbound runs with sequence
      nodes, contacts, and sender accounts.
  - name: Accounts
    description: Signed-in user account, settings, and workspace context endpoints.
  - name: Billing
    description: Billing customer portal and account billing endpoints.
  - name: Senders
    description: >-
      Connected sender accounts, email inboxes, sending domains, DNS
      verification, warmup, and sender capacity.
  - name: Socials
    description: >-
      Read connected LinkedIn and X accounts, review current and archived posts,
      and reconcile publication status. Creating, editing, scheduling,
      publishing, OAuth connection, analytics, and mentions remain
      dashboard-managed workflows and are not part of the public Bearer-token
      API.
paths:
  /api/context:
    put:
      tags:
        - Accounts
      summary: Update Company Profile
      description: >-
        Replace the company profile (ICP, company positioning, content plan,
        user background) and optionally update identity fields on the workspace
        profile. The body is validated end-to-end against the full profile shape
        — partial objects are rejected with 400.


        Typical flow: fetch with `GET /api/context`, mutate the sections the
        user wants to change, and PUT the full object back. Setup also calls
        this internally after collecting data from the user's LinkedIn and
        company website.


        Agents should not invent profile details — prefer asking the human for
        specifics or running setup to auto-derive them.
      operationId: updateContext
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                context:
                  type: object
                  properties:
                    user:
                      type: object
                      properties:
                        professionalBackground:
                          type: string
                          nullable: true
                      required:
                        - professionalBackground
                      additionalProperties: false
                      description: Who the caller is — a short professional biography.
                    company:
                      type: object
                      properties:
                        overview:
                          type: string
                          nullable: true
                        product:
                          type: string
                          nullable: true
                        problemSolved:
                          type: string
                          nullable: true
                        differentiators:
                          type: string
                          nullable: true
                        linkedInPresence:
                          type: string
                          nullable: true
                      required:
                        - overview
                        - product
                        - problemSolved
                        - differentiators
                        - linkedInPresence
                      additionalProperties: false
                      description: >-
                        What the company does, the product, and how it positions
                        itself.
                    content:
                      type: object
                      properties:
                        linkedInVoice:
                          type: string
                          nullable: true
                        recommendedTopics:
                          type: array
                          items:
                            type: string
                          nullable: true
                        preferredTone:
                          type: string
                          nullable: true
                        contentFormats:
                          type: array
                          items:
                            type: string
                          nullable: true
                        topicsToAvoid:
                          type: array
                          items:
                            type: string
                          nullable: true
                        postingCadence:
                          type: string
                          nullable: true
                      required:
                        - linkedInVoice
                        - recommendedTopics
                        - preferredTone
                        - contentFormats
                        - topicsToAvoid
                        - postingCadence
                      additionalProperties: false
                      description: Content plan — voice, topic guardrails, posting cadence.
                    market:
                      type: object
                      properties:
                        targetAudience:
                          type: string
                          nullable: true
                        industryContext:
                          type: string
                          nullable: true
                        icpJobTitles:
                          type: array
                          items:
                            type: string
                          nullable: true
                        icpIndustries:
                          type: array
                          items:
                            type: string
                          nullable: true
                        icpCompanySizes:
                          type: array
                          items:
                            type: string
                          nullable: true
                        icpPainPoints:
                          type: array
                          items:
                            type: string
                          nullable: true
                        icpKeywords:
                          type: array
                          items:
                            type: string
                          nullable: true
                      required:
                        - targetAudience
                        - industryContext
                        - icpJobTitles
                        - icpIndustries
                        - icpCompanySizes
                        - icpPainPoints
                        - icpKeywords
                      additionalProperties: false
                      description: >-
                        Ideal customer profile. Consumed by Feed and Lead Finder
                        search preparation, search reassessment, and outbound
                        message generation to tailor downstream action.
                    extra:
                      description: >-
                        Freeform structured context. Convention: the UI writes a
                        `freeform` string field here that the prompt formatter
                        appends as `## Additional Context`.
                      type: object
                      additionalProperties: {}
                      nullable: true
                  required:
                    - user
                    - company
                    - content
                    - market
                    - extra
                  additionalProperties: false
                  description: >-
                    Full context object. Validated against
                    `FullUserContextSchema`; all four sub-objects (`user`,
                    `company`, `content`, `market`) must be present, `extra` may
                    be `null`.
                profile:
                  type: object
                  properties:
                    firstName:
                      type: string
                    lastName:
                      type: string
                    companyName:
                      type: string
                    website:
                      type: string
                  additionalProperties: false
                  description: >-
                    Optional identity fields to update alongside the context
                    JSONB columns. Only keys present in the body are applied.
              required:
                - context
              additionalProperties: false
              description: >-
                Whole-object replacement for context. There is no field-level
                PATCH — fetch with `GET /api/context`, mutate client-side, and
                PUT the full object back.
      responses:
        '200':
          description: Context saved. Returns the newly persisted full context.
          content:
            application/json:
              schema:
                type: object
                properties:
                  context:
                    type: object
                    properties:
                      user:
                        type: object
                        properties:
                          professionalBackground:
                            type: string
                            nullable: true
                        required:
                          - professionalBackground
                        additionalProperties: false
                        description: Who the caller is — a short professional biography.
                      company:
                        type: object
                        properties:
                          overview:
                            type: string
                            nullable: true
                          product:
                            type: string
                            nullable: true
                          problemSolved:
                            type: string
                            nullable: true
                          differentiators:
                            type: string
                            nullable: true
                          linkedInPresence:
                            type: string
                            nullable: true
                        required:
                          - overview
                          - product
                          - problemSolved
                          - differentiators
                          - linkedInPresence
                        additionalProperties: false
                        description: >-
                          What the company does, the product, and how it
                          positions itself.
                      content:
                        type: object
                        properties:
                          linkedInVoice:
                            type: string
                            nullable: true
                          recommendedTopics:
                            type: array
                            items:
                              type: string
                            nullable: true
                          preferredTone:
                            type: string
                            nullable: true
                          contentFormats:
                            type: array
                            items:
                              type: string
                            nullable: true
                          topicsToAvoid:
                            type: array
                            items:
                              type: string
                            nullable: true
                          postingCadence:
                            type: string
                            nullable: true
                        required:
                          - linkedInVoice
                          - recommendedTopics
                          - preferredTone
                          - contentFormats
                          - topicsToAvoid
                          - postingCadence
                        additionalProperties: false
                        description: >-
                          Content plan — voice, topic guardrails, posting
                          cadence.
                      market:
                        type: object
                        properties:
                          targetAudience:
                            type: string
                            nullable: true
                          industryContext:
                            type: string
                            nullable: true
                          icpJobTitles:
                            type: array
                            items:
                              type: string
                            nullable: true
                          icpIndustries:
                            type: array
                            items:
                              type: string
                            nullable: true
                          icpCompanySizes:
                            type: array
                            items:
                              type: string
                            nullable: true
                          icpPainPoints:
                            type: array
                            items:
                              type: string
                            nullable: true
                          icpKeywords:
                            type: array
                            items:
                              type: string
                            nullable: true
                        required:
                          - targetAudience
                          - industryContext
                          - icpJobTitles
                          - icpIndustries
                          - icpCompanySizes
                          - icpPainPoints
                          - icpKeywords
                        additionalProperties: false
                        description: >-
                          Ideal customer profile. Consumed by Feed and Lead
                          Finder search preparation, search reassessment, and
                          outbound message generation to tailor downstream
                          action.
                      extra:
                        description: >-
                          Freeform structured context. Convention: the UI writes
                          a `freeform` string field here that the prompt
                          formatter appends as `## Additional Context`.
                        type: object
                        additionalProperties: {}
                        nullable: true
                    required:
                      - user
                      - company
                      - content
                      - market
                      - extra
                    additionalProperties: false
                    description: >-
                      Assembled company profile. Each sub-object is stored as a
                      separate JSONB column on `user_profiles` and merged at
                      read time.
                required:
                  - context
                additionalProperties: false
        '400':
          description: >-
            Body is missing `context`, `context` is not an object, or the shape
            fails `FullUserContextSchema` validation.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
              examples:
                notObject:
                  summary: Missing or non-object context
                  value:
                    error: Context must be an object
                invalidShape:
                  summary: Zod validation failed
                  value:
                    error: Invalid context shape
        '401':
          description: Missing or invalid Bearer token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
              examples:
                default:
                  value:
                    error: Unauthorized
        '500':
          description: Database update failed or unexpected server error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
              examples:
                saveFailed:
                  value:
                    error: Failed to save context
                unknown:
                  value:
                    error: Internal server error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: pk_live_...

````