> ## 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.

# Get Company Profile

> Get company profile

**CLI:**

```bash theme={null}
puffle context
```

## Overview

Returns the saved company profile for the authenticated workspace. The profile is the operating context Puffle uses for Feed and Lead Finder search preparation, search reassessment, and outbound message generation.

The response includes the assembled `context` object and profile identity fields. New or incomplete workspaces can return `context: null` or `profile: null`; treat that as setup not finished rather than an empty ICP.

## AI agent notes

Call this during the boot sequence before launching workflows that depend on ICP, company positioning, content voice, or market assumptions. If the profile is missing, stop and ask the human to finish setup or provide the missing details.

Do not invent company profile fields. To change the profile, fetch the current object first, preserve fields the human did not change, then send the full object to [Update Company Profile](/api-reference/accounts/update-context).


## OpenAPI

````yaml get /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:
    get:
      tags:
        - Accounts
      summary: Get Company Profile
      description: >-
        Return the saved company profile for the authenticated workspace: ICP,
        company positioning, content plan, and the user's professional
        background. This is the agent's first workspace-context check and feeds
        every downstream journey. See the [Agent Playbook boot
        sequence](/guides/agent-playbook#boot-sequence).


        Downstream Feed and Lead Finder search preparation and outbound message
        generation implicitly pull this profile server-side. The agent should
        still read it so it can narrate the user's business back to them, flag
        ICP mismatches before running a task, and decide which user journey
        applies.


        `null` on either key means setup is incomplete: the workspace profile
        hasn't been created yet.
      operationId: listContext
      parameters: []
      responses:
        '200':
          description: >-
            Context + identity fields. Both are `null` when the workspace has no
            profile row yet (new user mid-onboarding).
          content:
            application/json:
              schema:
                type: object
                properties:
                  context:
                    description: >-
                      Assembled company profile. Each sub-object is stored as a
                      separate JSONB column on `user_profiles` and merged at
                      read time.
                    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
                    nullable: true
                  profile:
                    type: object
                    properties:
                      firstName:
                        type: string
                        nullable: true
                      lastName:
                        type: string
                        nullable: true
                      companyName:
                        type: string
                        nullable: true
                      website:
                        type: string
                        nullable: true
                      linkedinUrl:
                        type: string
                        nullable: true
                      companyLinkedinUrl:
                        type: string
                        nullable: true
                      lastContextRegeneratedAt:
                        description: >-
                          Timestamp of the last successful context regeneration
                          from LinkedIn + website scraping. `null` indicates the
                          workspace has never completed onboarding.
                        type: string
                        format: date-time
                        nullable: true
                    required:
                      - firstName
                      - lastName
                      - companyName
                      - website
                      - linkedinUrl
                      - companyLinkedinUrl
                      - lastContextRegeneratedAt
                    additionalProperties: false
                    description: >-
                      Identity fields stored alongside the context JSONB
                      columns. Returned so a UI can render a full profile page
                      without a second round-trip.
                    nullable: true
                required:
                  - context
                  - profile
                additionalProperties: false
              examples:
                populated:
                  summary: Onboarded workspace — ready for downstream calls
                  value:
                    context:
                      user:
                        professionalBackground: Former B2B SaaS founder, now building GTM tooling.
                      company:
                        overview: >-
                          Puffle is a unified GTM platform for founders finding
                          prospects and running outbound in one place.
                        product: >-
                          Feed and Lead Finder search preparation +
                          multi-channel Outbound + Unibox reply management.
                        problemSolved: Founders stitching together 8+ tools to run outbound.
                        differentiators: >-
                          Single workspace, AI-native, built for founders who
                          drive sales themselves.
                        linkedInPresence: >-
                          Active founder-led presence, product-build-in-public
                          posts.
                      content:
                        linkedInVoice: Direct, candid, founder-to-founder.
                        recommendedTopics:
                          - outbound
                          - GTM
                          - AI sales tooling
                        preferredTone: Confident, plainspoken, no fluff.
                        contentFormats:
                          - text post
                          - carousel
                        topicsToAvoid:
                          - politics
                          - motivational platitudes
                        postingCadence: 3x/week
                      market:
                        targetAudience: >-
                          Series A–B B2B SaaS founders running their own
                          outbound.
                        industryContext: >-
                          Crowded sales tooling market with fragmented point
                          solutions.
                        icpJobTitles:
                          - Founder
                          - CEO
                          - Head of GTM
                        icpIndustries:
                          - B2B SaaS
                          - Developer tools
                          - Fintech
                        icpCompanySizes:
                          - 11-50
                          - 51-200
                        icpPainPoints:
                          - Manually coordinating across 8 tools
                          - Brittle enrichment data
                        icpKeywords:
                          - outbound
                          - GTM
                          - founder-led sales
                      extra: null
                    profile:
                      firstName: Sarah
                      lastName: Chen
                      companyName: Acme
                      website: https://acme.com
                      linkedinUrl: https://linkedin.com/in/sarahchen
                      companyLinkedinUrl: https://linkedin.com/company/acme
                      lastContextRegeneratedAt: '2026-04-19T12:00:00Z'
                notOnboarded:
                  summary: Workspace has not completed onboarding yet
                  value:
                    context: null
                    profile: null
        '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: Unexpected server error assembling the context.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
              examples:
                default:
                  value:
                    error: Internal server error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: pk_live_...

````