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

# Run history actions on any channel

> Cross-channel superset of `POST /calls/actions`. Re-evaluate the post-conversation analysis (summary, sentiment, success verdict and extracted fields), start an enhanced re-transcription from a call recording, resend the end-of-conversation webhook, reopen a completed WhatsApp conversation with AI auto-replies, or add/remove the contact phone from the suppression (blacklist) list.

Set `kind` to select the record type:

- `call` — phone calls, live chat, avatar sessions and WhatsApp voice (`ids` are call IDs)
- `messaging` — WhatsApp, Telegram, Slack, Messenger, Teams, Discord, Google Chat and X conversations (`ids` are conversation IDs)
- `email` — email threads (`ids` are the thread's root message ID, which is what `GET /history` returns as the row `id`)

`retranscribe` is only valid for `kind: call`, requires exactly one ID, and returns the rounded recording minutes plus the credit quote. `resend_webhook` always rebuilds the payload from the record as it is stored right now, so a resend after a `reanalyze` delivers the updated analysis. `resume_ai` is only valid for `kind: messaging` and only while a completed WhatsApp conversation's 24-hour customer service window is still open. It starts a fresh internal inactivity timer without extending the Meta window. `blacklist_add` and `blacklist_remove` are phone-based and therefore only valid for `kind: call`.

Other actions process up to 50 IDs per request. **Required scope:** `calls:write`. Blacklist actions also need `suppression:write` or `campaigns:write` (unrestricted keys have full access).



## OpenAPI

````yaml /api-reference/openapi.json post /history/actions
openapi: 3.1.0
info:
  title: Famulor API
  version: 1.0.0
  description: >-
    REST API for Famulor. Authenticate with an API key (`fam_...`, created under
    **Settings → API Keys**) or an OAuth 2.0 access token (`fam_at_...`) as a
    Bearer token.


    Every response uses a consistent envelope: `{ "data": ... , "meta": { ... }
    }` on success and `{ "error": { "code", "message" } }` on failure. List
    endpoints paginate with `?limit=` (default 50, max 200) and `?offset=`;
    `meta.pagination.total` carries the total match count.


    REST operations require API Access through the workspace plan or a recurring
    add-on. Without it, regular operations return `403 api_access_required`. The
    invoice-payment and billing-portal operations remain available with a valid
    credential after a failed plan payment so an owner can recover billing.


    The same customer-facing capabilities are available as MCP tools at
    `https://app.famulor.io/mcp` (Model Context Protocol, streamable HTTP) using
    the same credentials, scopes, and workspace access. MCP availability is
    controlled separately by Connect AI / MCP, not by API Access.
servers:
  - url: https://app.famulor.io/api/v1
    description: Hosted platform.
  - url: https://{domain}/api/v1
    description: White-label tenant domain — same paths, tenant branding.
    variables:
      domain:
        default: app.famulor.io
        description: Your white-label tenant domain.
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Self-inspection of the calling credential.
  - name: Migrations
    description: Preview and import data from supported legacy platforms.
  - name: Assistants
    description: Create and manage voice assistants.
  - name: Tools
    description: >-
      Reusable tools (HTTP APIs and external MCP servers) assistants can call
      mid-conversation.
  - name: Voices
    description: Browse the text-to-speech voice library.
  - name: Calls
    description: Start outbound calls and read call history, transcripts and recordings.
  - name: History
    description: Unified conversation history across calls, messaging and assistant emails.
  - name: Campaigns
    description: Outbound calling campaigns with a compliant power dialer.
  - name: Leads
    description: Manage Audience contacts across campaigns, channels and Call QA metrics.
  - name: Segments
    description: >-
      Saved, dynamic lead filters — reusable audience definitions used for
      Audience search and campaign lead assignment.
  - name: Suppression
    description: Cross-channel marketing opt-outs and active workspace suppression records.
  - name: Callbacks
    description: >-
      Scheduled callbacks booked by the Schedule callback tool across voice,
      chat, and email.
  - name: Phone Numbers
    description: Marketplace numbers and customer-provided numbers.
  - name: Famulor Loop
    description: >-
      Personal business-phone access, directory, presence, devices, and Loop
      call recents.
  - name: SIP Trunks
    description: Bring your own SIP provider and numbers.
  - name: Carrier Connections
    description: Connect a supported carrier account and import its existing phone numbers.
  - name: Knowledge Bases
    description: RAG knowledge bases and documents for assistants.
  - name: Settings
    description: Workspace-level settings such as caller-memory defaults.
  - name: Billing
    description: Balance and minutes ledger of the key owner.
  - name: Automations
    description: >-
      Native workspace automations — list, create, update, trigger. Plan gate:
      automation_platform.
  - name: Milian Missions
    description: Recurring jobs that Milian runs unattended on schedule.
  - name: Integrations
    description: >-
      Calendar integrations (Cal.com, Calendly, Acuity Scheduling, Google
      Calendar, Outlook, native booking engine). Assign them to assistants to
      provide availability and booking tools, plus provider-supported
      appointment lookup, cancellation, and rescheduling.
  - name: Bookings
    description: >-
      Native booking engine — event types with weekly availability, public
      booking pages at /book/{workspace}/{slug}, and the bookings they produce.
  - name: Dashboards
    description: >-
      Custom analytics dashboards, reusable widgets, and tenant-scoped
      performance analytics. Requires the custom_dashboards plan feature.
  - name: Catalog
    description: >-
      Read-only platform catalogs — available models, supported assistant
      languages, and prompt templates.
  - name: Simulations
    description: Assistant simulation tests (plan-gated).
  - name: Versions
    description: Assistant configuration version history.
  - name: Caller IDs
    description: Outbound caller ID verification.
  - name: Widgets
    description: Web widget connectors.
  - name: Messaging
    description: >-
      Telegram, Slack, and Messenger text bots linked to assistants (Chat SDK).
      Includes conversation delay, inactivity end, and conversation-ended
      webhooks.
  - name: QA
    description: Cohort AI Quality Assurance runs over call transcripts.
  - name: White Label
    description: >-
      Manage the customers of your white-label workspace on their behalf — list,
      register, mint access tokens, log in, log out, and transfer credits.
      Available to reseller workspaces with white-label access, and to platform
      admins (scoped to direct platform customers). Requires `platform:read` /
      `platform:write`.
  - name: API Keys
    description: >-
      Self-service API keys for the calling workspace or a same-brand workspace
      where the credential's user is owner/admin. A key can only mint further
      keys with a scope subset of its own.
  - name: Workspaces
    description: >-
      List visible workspaces, create an additional workspace for the key owner,
      and mint a dedicated credential for a selected owner/admin workspace.
  - name: SMS
    description: Outbound SMS from workspace phone numbers.
paths:
  /history/actions:
    post:
      tags:
        - History
      summary: Run history actions on any channel
      description: >-
        Cross-channel superset of `POST /calls/actions`. Re-evaluate the
        post-conversation analysis (summary, sentiment, success verdict and
        extracted fields), start an enhanced re-transcription from a call
        recording, resend the end-of-conversation webhook, reopen a completed
        WhatsApp conversation with AI auto-replies, or add/remove the contact
        phone from the suppression (blacklist) list.


        Set `kind` to select the record type:


        - `call` — phone calls, live chat, avatar sessions and WhatsApp voice
        (`ids` are call IDs)

        - `messaging` — WhatsApp, Telegram, Slack, Messenger, Teams, Discord,
        Google Chat and X conversations (`ids` are conversation IDs)

        - `email` — email threads (`ids` are the thread's root message ID, which
        is what `GET /history` returns as the row `id`)


        `retranscribe` is only valid for `kind: call`, requires exactly one ID,
        and returns the rounded recording minutes plus the credit quote.
        `resend_webhook` always rebuilds the payload from the record as it is
        stored right now, so a resend after a `reanalyze` delivers the updated
        analysis. `resume_ai` is only valid for `kind: messaging` and only while
        a completed WhatsApp conversation's 24-hour customer service window is
        still open. It starts a fresh internal inactivity timer without
        extending the Meta window. `blacklist_add` and `blacklist_remove` are
        phone-based and therefore only valid for `kind: call`.


        Other actions process up to 50 IDs per request. **Required scope:**
        `calls:write`. Blacklist actions also need `suppression:write` or
        `campaigns:write` (unrestricted keys have full access).
      operationId: runHistoryActions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - action
                - kind
                - ids
              properties:
                action:
                  type: string
                  enum:
                    - reanalyze
                    - retranscribe
                    - resend_webhook
                    - resume_ai
                    - blacklist_add
                    - blacklist_remove
                kind:
                  type: string
                  enum:
                    - call
                    - messaging
                    - email
                  description: Which History record type the ids address.
                ids:
                  type: array
                  items:
                    type: string
                    format: uuid
                  minItems: 1
                  maxItems: 50
            example:
              action: reanalyze
              kind: messaging
              ids:
                - be4c9efe-0000-4000-8000-000000000010
      responses:
        '200':
          description: Per-record results.
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    type: object
                    required:
                      - ok
                      - failed
                      - results
                    properties:
                      ok:
                        type: integer
                      failed:
                        type: integer
                      results:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                            kind:
                              type: string
                              enum:
                                - call
                                - messaging
                                - email
                            ok:
                              type: boolean
                            error:
                              type: string
                            detail:
                              type: object
                              additionalProperties: true
        '400':
          description: Invalid action, kind, or ids.
        '401':
          description: Missing or invalid API key.
        '403':
          description: Missing scope.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        API key (`fam_...`, created under **Settings → API Keys**) or an OAuth
        2.0 access token (`fam_at_...`). REST operations also require API Access
        for the credential's workspace. Keys can be restricted to scopes such as
        `assistants:read`, `calls:write`, `campaigns:write`, `automations:read`,
        `dashboards:read`, `dashboards:write`, `leads:write`, `segments:write`,
        `loop:read`, `loop:write`, `phone_numbers:write`, `sip_trunks:write`,
        `knowledge:write`, `voices:read`, `billing:read`, `settings:write`,
        `platform:read`, `platform:write`; a `*:write` scope implies the
        matching `*:read`. Automation and dashboard endpoints also accept the
        legacy `calls:*` scope. Keys without scope restrictions have full access
        within the workspace's available capabilities.

````