Skip to main content
PUT
/
api
/
context
Update Company Profile
curl --request PUT \
  --url https://app.puffle.ai/api/context \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "context": {
    "user": {
      "professionalBackground": "<string>"
    },
    "company": {
      "overview": "<string>",
      "product": "<string>",
      "problemSolved": "<string>",
      "differentiators": "<string>",
      "linkedInPresence": "<string>"
    },
    "content": {
      "linkedInVoice": "<string>",
      "recommendedTopics": [
        "<string>"
      ],
      "preferredTone": "<string>",
      "contentFormats": [
        "<string>"
      ],
      "topicsToAvoid": [
        "<string>"
      ],
      "postingCadence": "<string>"
    },
    "market": {
      "targetAudience": "<string>",
      "industryContext": "<string>",
      "icpJobTitles": [
        "<string>"
      ],
      "icpIndustries": [
        "<string>"
      ],
      "icpCompanySizes": [
        "<string>"
      ],
      "icpPainPoints": [
        "<string>"
      ],
      "icpKeywords": [
        "<string>"
      ]
    },
    "extra": {}
  },
  "profile": {
    "firstName": "<string>",
    "lastName": "<string>",
    "companyName": "<string>",
    "website": "<string>"
  }
}
'
{
  "context": {
    "user": {
      "professionalBackground": "<string>"
    },
    "company": {
      "overview": "<string>",
      "product": "<string>",
      "problemSolved": "<string>",
      "differentiators": "<string>",
      "linkedInPresence": "<string>"
    },
    "content": {
      "linkedInVoice": "<string>",
      "recommendedTopics": [
        "<string>"
      ],
      "preferredTone": "<string>",
      "contentFormats": [
        "<string>"
      ],
      "topicsToAvoid": [
        "<string>"
      ],
      "postingCadence": "<string>"
    },
    "market": {
      "targetAudience": "<string>",
      "industryContext": "<string>",
      "icpJobTitles": [
        "<string>"
      ],
      "icpIndustries": [
        "<string>"
      ],
      "icpCompanySizes": [
        "<string>"
      ],
      "icpPainPoints": [
        "<string>"
      ],
      "icpKeywords": [
        "<string>"
      ]
    },
    "extra": {}
  }
}
CLI:
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 strategy, 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 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.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

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.

context
object
required

Full context object. Validated against FullUserContextSchema; all four sub-objects (user, company, content, market) must be present, extra may be null.

profile
object

Optional identity fields to update alongside the context JSONB columns. Only keys present in the body are applied.

Response

Context saved. Returns the newly persisted full context.

context
object
required

Assembled company profile. Each sub-object is stored as a separate JSONB column on user_profiles and merged at read time.