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

# Create a playbook (org-level or per-rep override)

> Create a sales playbook. Polymorphic scope: omit `rep_id` to create an **org-level** playbook (every rep in the org uses it as the baseline at analysis time, when `is_active=true`). Pass `rep_id` to create a **rep-level** playbook (overrides the org playbook for that rep only).

**Resolution order at analysis time:**

1. `options.playbook_content` (literal text on the analysis request)
2. `options.playbook_id` (explicit lookup)
3. Active rep-level playbook for the analysis's rep — *if `rep_id` is set on the analysis*
4. Active org-level playbook for the analysis's org
5. None (model uses default scoring)

Use rep-level playbooks for A/B tests, per-coach customization, or consumer products where every end-user is a `rep` with their own rubric. The org-level playbook stays in place as the baseline — no need to disable it. See [PAR-185](https://linear.app/goparlay/issue/PAR-185).



## OpenAPI

````yaml https://api.goparlay.io/docs/json post /v1/orgs/{org_id}/playbooks
openapi: 3.0.3
info:
  title: Parlay API
  description: >-
    Partner-facing API for Parlay pitch scoring, rep intelligence, and coaching.
    See API.md for the full spec.
  version: 0.1.0
servers:
  - url: http://localhost:3000
    description: production
security:
  - ApiKeyAuth: []
tags:
  - name: Health
    description: Service health and platform status
  - name: Analyses
    description: Submit and retrieve pitch scoring analyses
  - name: Orgs
    description: Partner org management
  - name: Reps
    description: Rep management
  - name: Keys
    description: API key lifecycle
  - name: Webhooks
    description: Webhook registration and delivery
  - name: Personas
    description: Rep persona intelligence
  - name: Methodologies
    description: Rep methodology intelligence
  - name: Synthesis
    description: Profile synthesis
  - name: Insights
    description: Org-level insights
  - name: Playbooks
    description: Playbook management + AI drafting
  - name: Prompts
    description: Custom AI prompts
  - name: Scoring
    description: Scoring profile config
  - name: Chat
    description: Scout AI chat
  - name: Dispositions
    description: Call dispositions
  - name: Practice
    description: Practice sessions
  - name: Bulk
    description: Batch and export
  - name: Usage
    description: Usage and billing
  - name: Audit
    description: Audit log
paths:
  /v1/orgs/{org_id}/playbooks:
    post:
      tags:
        - Playbooks
      summary: Create a playbook (org-level or per-rep override)
      description: >-
        Create a sales playbook. Polymorphic scope: omit `rep_id` to create an
        **org-level** playbook (every rep in the org uses it as the baseline at
        analysis time, when `is_active=true`). Pass `rep_id` to create a
        **rep-level** playbook (overrides the org playbook for that rep only).


        **Resolution order at analysis time:**


        1. `options.playbook_content` (literal text on the analysis request)

        2. `options.playbook_id` (explicit lookup)

        3. Active rep-level playbook for the analysis's rep — *if `rep_id` is
        set on the analysis*

        4. Active org-level playbook for the analysis's org

        5. None (model uses default scoring)


        Use rep-level playbooks for A/B tests, per-coach customization, or
        consumer products where every end-user is a `rep` with their own rubric.
        The org-level playbook stays in place as the baseline — no need to
        disable it. See [PAR-185](https://linear.app/goparlay/issue/PAR-185).
      parameters:
        - schema:
            type: string
          in: path
          name: org_id
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                rep_id:
                  type: string
                  minLength: 1
                  maxLength: 256
                  description: >-
                    Optional. When set, scopes the playbook to a single rep
                    within this org instead of the whole org. Per-rep playbooks
                    override the org-level playbook for that rep at analysis
                    time. Use for A/B tests, per-coach customization, or
                    per-end-user flows in consumer products. The rep must
                    already exist (create one first via POST /v1/reps). Omit
                    this field to create an org-level playbook (every rep
                    inherits it as the baseline).
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: >-
                    Display name for the playbook (e.g. "Q2 2026 Outbound
                    Playbook").
                content:
                  type: string
                  minLength: 1
                  maxLength: 500000
                  description: >-
                    Playbook body, typically markdown. Fed into every analysis
                    for this org (or rep, if rep_id is set) when is_active=true.
                    Max 500,000 chars.
                is_active:
                  type: boolean
                  description: >-
                    Default true. Multiple is_active=true playbooks at the same
                    scope are allowed; the most recently-created one wins at
                    analysis time.
                file_name:
                  type: string
                  maxLength: 200
                  description: >-
                    Original filename if the partner uploaded the playbook from
                    disk.
                metadata:
                  type: object
                  additionalProperties: {}
                  description: >-
                    Free-form key/value bag for partner-side bookkeeping. Not
                    interpreted by Parlay.
              required:
                - content
              additionalProperties: false
      responses:
        '200':
          description: Default Response
components:
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key (pk_sandbox_* or pk_live_*)

````