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

# Discard a Preview

> Throw the Preview away, freeing the agent for a fresh one. The examples and verdicts stay as history. Idempotent.



## OpenAPI

````yaml /openapi.json post /agent-training/sessions/{session_id}/abandon/
openapi: 3.1.0
info:
  contact:
    email: support@getoneprofile.ai
    name: Oneprofile Support
  description: >-
    REST API reference for Oneprofile, the GTM data layer for your CRM. Manage
    tables, enrichments, and integrations. Authenticate with an API key to get
    started.
  termsOfService: https://www.getoneprofile.ai/terms
  title: API Reference | Oneprofile
  version: '0.0'
servers:
  - url: https://api.getoneprofile.ai
security: []
tags:
  - description: >-
      The docked AI Assistant: its general chat about the workspace and the
      product, streamed as Server-Sent Events, and the one list of a person's
      threads across every assistant, with pin, rename, delete and the
      search-to-table link.
    name: assistant
  - description: >-
      The messages a person keeps to send the assistant again: the ones the
      workspace saved and the ones that ship with the product, with save,
      rename, edit and delete.
    name: assistant-prompt
  - description: >-
      Granted workspace actions: what the AI Assistant proposed or applied in a
      conversation, the approve and dismiss decisions on each card, the
      workspace's spend threshold and default grants, and the eight verbs.
    name: workspace-actions
  - description: >-
      The Getting started checklist: a workspace's progress through the six
      steps from its first people search to its first launched sequence.
    name: onboarding
  - description: Senders, connected mailboxes, tags, and the Google connect flow.
    name: senders
  - description: The workspace do-not-contact list, enforced before every send.
    name: suppression
  - description: >-
      The workspace's recontact rule: how long before anyone hears from us
      again.
    name: contact_cooldown
  - description: 'Sequence authoring: the graph, the table-backed audience, previews.'
    name: sequences
  - description: >-
      The outbound agent behind a sequence: the voice it writes in, its
      per-message prompts, what it wrote and what people told it.
    name: outbound-agents
  - description: >-
      The LinkedIn channel: connecting an account to a sender, its safety limits
      and history, and the protocol the browser extension speaks.
    name: linkedin
  - description: >-
      The approval queue: everything waiting on a person across every sender and
      channel, and the workspace's manual or automatic modes per channel.
    name: outreach
  - description: 'The unified outreach inbox: threads, replies, labels, events.'
    name: inbox
  - description: 'The AI reply layer: workspace settings, drafts, and approval.'
    name: inbox-ai
  - description: Notification rules, per-user preferences, and the Slack connection.
    name: notifications
  - description: Endpoints for seeing all available integration types.
    name: integration-types
  - description: Endpoints for creating and managing integrations.
    name: integrations
  - description: Endpoints for the generic OAuth install/claim app-listings engine.
    name: app-listings
  - description: Endpoints for creating and managing API keys.
    name: apikey
  - description: >-
      AI apps connected to the workspace: Claude, ChatGPT, Claude Code or any
      other MCP client a person signed in to Oneprofile's MCP server with.
    name: ai_apps
  - description: Endpoints for managing billing and subscription information.
    name: billing
  - description: Endpoints for creating and managing tables.
    name: tables
  - description: Endpoints for table columns, formula previews, and on-demand column runs.
    name: table-columns
  - description: Endpoints for table rows and manual cell edits.
    name: table-rows
  - description: Endpoints for observing and cancelling table recompute runs.
    name: table-runs
  - description: >-
      Endpoints for org-shared per-column display preferences: hidden, pinned,
      width, and colour tint.
    name: table-ui-prefs
  - description: >-
      Endpoints for the org-shared names given to the column tint palette: what
      this organisation calls each colour. Org-level, not per-table.
    name: table-column-color-labels
  - description: >-
      Endpoints for the enrichment action catalog, model list, presets, draft
      generation, and saved agents.
    name: table-enrichments
  - description: >-
      Endpoints for an agent's Preview: example rows run one at a time, and a
      Looks good on each. Needs work lives under agent-learnings.
    name: agent-training
  - description: >-
      An agent's learnings, the one-line rules it follows on every output, and
      the thumbs down that teaches them: give one with what was wrong, list the
      ones on a subject, Undo one, and price the redo it would run.
    name: agent-learnings
  - description: >-
      The durable audit trail of a table's enrichment actions: configured,
      edited, run, cancelled, and settled cost.
    name: table-enrichment-audit-logs
  - description: Endpoints for saving and applying column templates.
    name: table-templates
  - description: Server-sent change feed for a table's grid.
    name: table-events
  - description: 'Endpoints for org-shared saved table views: sort, filters, hidden columns.'
    name: table-views
  - description: >-
      Endpoints for PER-USER table preferences: favourites and recently opened.
      Unlike the rest of the table surface these are personal, so two members of
      one organisation legitimately see different answers.
    name: table-user-prefs
  - description: >-
      Endpoints for building a table from an uploaded CSV: upload and preview
      the inferred columns, commit the reviewed mapping, then poll the row load.
    name: table-imports
  - description: Endpoint for downloading a table's rows as CSV.
    name: table-export
  - description: >-
      Endpoints for the integration a table imports from: attach and preview it,
      promote imported fields into columns, and run the import on demand.
    name: table-sources
  - description: >-
      Endpoints for a table's recurring import cadence: set it, pause it, and
      read the next fire times.
    name: table-schedules
  - description: >-
      Endpoints for pushing a table's rows out to a connected integration: list
      writable destinations, derive their write capabilities, and map export
      columns.
    name: table-writeback
  - description: >-
      Endpoints backing a lookup column's setup: the connections whose records a
      column could read, and the identity fields one record type can be looked
      up by.
    name: table-integration-lookup
  - description: >-
      Endpoints for sourcing leads from the lead database: count and preview
      matches, land them in a table, and keep saved searches. Alongside people
      and company searches, leads can be sourced from buying signals (what a
      company or person just did), with a catalogue endpoint behind the picker
      that builds them.
    name: find-leads
  - description: >-
      Endpoints for discovering a domain's subdomains from public certificate
      logs and landing the results in a table.
    name: find-subdomains
  - description: Endpoints for the credit balance meter and usage reporting.
    name: credits
  - description: >-
      Endpoints for the workspace referral program: the shareable link, the
      friends who joined through it, and claiming a code after signup.
    name: referral
  - description: >-
      Endpoints for the affiliate program's own dashboard: enrolling and
      claiming a code, the summary, stats and activity feed, the commission
      ledger, and identity verification and payouts.
    name: affiliate
  - description: >-
      Endpoints for recording where a new workspace came from: the marketing
      page or campaign its signup link carried, sent once after signup.
    name: attribution
  - description: >-
      Endpoints for the design partner program's customer surface: whether this
      workspace is a design partner, the badges its feedback has earned, and
      sending and reading that feedback.
    name: design-partner
  - description: >-
      Endpoints for the org-level AI business context (company description,
      ideal customer profile, buyer personas, interest signals and social
      proof), plus domain-based generation and the reference documents whose
      summaries ride alongside those fields.
    name: ai-context
  - description: >-
      Endpoints for the signed-in user's Google Drive connection: starting and
      finishing the OAuth grant, checking or dropping it, and minting the
      short-lived token the Google Picker needs.
    name: google-drive
paths:
  /agent-training/sessions/{session_id}/abandon/:
    post:
      tags:
        - agent-training
      summary: Discard a Preview
      description: >-
        Throw the Preview away, freeing the agent for a fresh one. The examples
        and verdicts stay as history. Idempotent.
      operationId: abandon_training_session
      parameters:
        - in: path
          name: session_id
          required: true
          schema:
            format: uuid
            title: Session Id
            type: string
        - description: Report what would happen, and change nothing.
          in: query
          name: dry_run
          required: false
          schema:
            default: false
            description: Report what would happen, and change nothing.
            title: Dry Run
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingSessionReadSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Preview not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Bad gateway error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    TrainingSessionReadSchema:
      description: >-
        A whole Preview, as the reviewer's page polls it.


        Everything the page needs in one payload: the phase (``status``), and
        the examples

        with their answers and verdicts. The page keeps polling while any
        example runs,

        a Needs work redo included.
      properties:
        created_at:
          format: date-time
          title: Created At
          type: string
        cycle:
          title: Cycle
          type: integer
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
        id:
          format: uuid
          title: Id
          type: string
        progress:
          $ref: '#/components/schemas/TrainingProgressSchema'
        rows:
          items:
            $ref: '#/components/schemas/TrainingRowReadSchema'
          title: Rows
          type: array
        saved_agent_id:
          format: uuid
          title: Saved Agent Id
          type: string
        source_input_mappings:
          additionalProperties:
            type: string
          title: Source Input Mappings
          type: object
        source_kind:
          $ref: '#/components/schemas/TrainingSourceKind'
        source_table_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          title: Source Table Id
        status:
          $ref: '#/components/schemas/TrainingSessionStatus'
        updated_at:
          format: date-time
          title: Updated At
          type: string
      required:
        - id
        - saved_agent_id
        - status
        - cycle
        - source_kind
        - source_table_id
        - source_input_mappings
        - error
        - created_at
        - updated_at
        - progress
        - rows
      title: TrainingSessionReadSchema
      type: object
    UnauthorizedResponse:
      properties:
        detail:
          description: The detail of why the request is unauthorized.
          title: Detail
          type: string
      required:
        - detail
      title: UnauthorizedResponse
      type: object
    ForbiddenResponse:
      properties:
        detail:
          description: The detail of why the request is forbidden.
          title: Detail
          type: string
      required:
        - detail
      title: ForbiddenResponse
      type: object
    NotFoundResponse:
      properties:
        detail:
          description: The detail of why the resource was not found.
          title: Detail
          type: string
      required:
        - detail
      title: NotFoundResponse
      type: object
    UnprocessableEntityResponse:
      properties:
        detail:
          description: >-
            The detail of the error. This is the error message to show to the
            user. You should also use the issues field to show more detailed
            error messages per field. Use this field for a single liner error
            message.
          title: Detail
          type: string
        issues:
          description: >-
            The issues that caused the error. There can be multiple issues. Each
            issue is a user-facing error message.
          items:
            $ref: '#/components/schemas/UnprocessableEntityIssue'
          title: Issues
          type: array
      required:
        - detail
        - issues
      title: UnprocessableEntityResponse
      type: object
    ServerErrorResponse:
      properties:
        detail:
          description: The detail of why the server returned an error.
          title: Detail
          type: string
      required:
        - detail
      title: ServerErrorResponse
      type: object
    TrainingProgressSchema:
      description: How far the examples' run has got.
      properties:
        done:
          title: Done
          type: integer
        failed:
          title: Failed
          type: integer
        total:
          title: Total
          type: integer
      required:
        - total
        - done
        - failed
      title: TrainingProgressSchema
      type: object
    TrainingRowReadSchema:
      description: >-
        One example: its fixed inputs and its latest answer.


        ``verdict`` is the reviewer's Looks good on that answer, null until
        given, which is

        what lets a reloaded page show the examples already judged. A Needs work
        runs the

        example again in place: ``status`` goes back to pending, then running,
        and

        ``run_no`` counts up.
      properties:
        confidence:
          anyOf:
            - $ref: '#/components/schemas/AgentConfidence'
            - type: 'null'
        credits_charged:
          title: Credits Charged
          type: number
        cycle:
          title: Cycle
          type: integer
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
        error_class:
          anyOf:
            - $ref: '#/components/schemas/EnrichmentErrorClass'
            - type: 'null'
        id:
          format: uuid
          title: Id
          type: string
        inputs:
          additionalProperties:
            type: string
          title: Inputs
          type: object
        needs_work:
          default: false
          description: >-
            Whether the example is marked Needs work: its latest thumbs down
            stands. An Undo clears it, so an example put back as it was is not
            counted.
          title: Needs Work
          type: boolean
        outcome:
          anyOf:
            - $ref: '#/components/schemas/EnrichmentCellOutcome'
            - type: 'null'
        position:
          title: Position
          type: integer
        reasoning:
          anyOf:
            - type: string
            - type: 'null'
          title: Reasoning
        run_no:
          description: >-
            How many times Needs work has run this example again; 0 for its
            first run.
          title: Run No
          type: integer
        skipped_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Skipped Reason
        sources:
          items:
            type: string
          title: Sources
          type: array
        status:
          $ref: '#/components/schemas/TrainingRowStatus'
        steps:
          items:
            $ref: '#/components/schemas/TrainingStepSchema'
          title: Steps
          type: array
        value:
          description: The produced value, on success.
          title: Value
        verdict:
          anyOf:
            - $ref: '#/components/schemas/TrainingVerdict'
            - type: 'null'
      required:
        - id
        - position
        - inputs
        - cycle
        - run_no
        - status
        - outcome
        - error
        - error_class
        - skipped_reason
        - confidence
        - reasoning
        - steps
        - sources
        - credits_charged
        - verdict
      title: TrainingRowReadSchema
      type: object
    TrainingSourceKind:
      description: Where a session's training inputs came from.
      enum:
        - table
        - manual
      title: TrainingSourceKind
      type: string
    TrainingSessionStatus:
      description: |-
        Where an agent Preview stands: the state the reviewer's screen shows.

        One enum rather than a separate lifecycle flag and phase, because the
        phase IS the state: a session is either waiting on the machine
        (``RUNNING``), waiting on the reviewer (``REVIEWING``), or finished.
        Callers never derive the screen from row counts. A Needs work on one
        example runs that example again without leaving ``REVIEWING``: the row's
        own status says it is running.
      enum:
        - running
        - reviewing
        - proposed
        - completed
        - abandoned
      title: TrainingSessionStatus
      type: string
    UnprocessableEntityIssue:
      properties:
        input:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - items: {}
              type: array
            - additionalProperties: true
              type: object
          description: The user's input that caused the error.
          title: Input
        loc:
          description: >-
            The location of the error. Always contains 1 or 2 elements. The
            first element is the type of location (e.g. 'body', 'query', 'path',
            'header'). The second element is the name of the field that caused
            the error. If the error is not related to a specific field, the
            second element is not present.
          items:
            type: string
          title: Loc
          type: array
        msg:
          description: The message of the error. The error message to show to the user.
          title: Msg
          type: string
        type:
          description: >-
            The type of the error. Useful for frontend code to handle different
            types of errors.
          title: Type
          type: string
      required:
        - loc
        - msg
        - type
        - input
      title: UnprocessableEntityIssue
      type: object
    AgentConfidence:
      description: The agent's own read on how solid its final answer is.
      enum:
        - high
        - medium
        - low
      title: AgentConfidence
      type: string
    EnrichmentErrorClass:
      description: >-
        Machine-readable classification of a failed enrichment cell.


        The class decides everything downstream: whether the executor retries

        (transient classes) or gives up (terminal ones), what the cell tooltip

        names, and whether the failure is free. Errors never charge, but only a

        classified error can prove which kind it was. A clean no-answer
        (no_data)

        is free for a lookup; an AI column's is charged what it used.
      enum:
        - timeout
        - rate_limited
        - quota_exhausted
        - provider_error
        - network
        - schema_violation
        - refused
        - invalid_input
        - no_data
        - enrichment_failed
        - unexpected
      title: EnrichmentErrorClass
      type: string
    EnrichmentCellOutcome:
      description: |-
        How one cell's enrichment execution ended.

        ``SKIPPED`` is a first-class third outcome: the action was deliberately
        not run (a required input was empty), no work was done, and nothing is
        charged.
      enum:
        - succeeded
        - failed
        - skipped
      title: EnrichmentCellOutcome
      type: string
    TrainingRowStatus:
      description: |-
        How far one training row has got in the CURRENT cycle's run.

        ``DONE`` means the run settled, not that it succeeded. A row whose agent
        call failed is still done, and its ``outcome`` says what happened. The
        reviewer critiques failures too.
      enum:
        - pending
        - running
        - done
      title: TrainingRowStatus
      type: string
    TrainingStepSchema:
      description: One research step the agent took on an example.
      properties:
        action:
          $ref: '#/components/schemas/AgentStepAction'
        detail:
          title: Detail
          type: string
        duration_ms:
          anyOf:
            - type: integer
            - type: 'null'
          description: How long the step took; null on records that predate timing.
          title: Duration Ms
        observation:
          title: Observation
          type: string
        outcome:
          $ref: '#/components/schemas/AgentStepOutcome'
          default: completed
          description: How the step ended, so a failed or refused step reads as one.
        thought:
          anyOf:
            - type: string
            - type: 'null'
          description: The model's stated reasoning for this step; null when not recorded.
          title: Thought
      required:
        - action
        - detail
        - observation
      title: TrainingStepSchema
      type: object
    TrainingVerdict:
      description: >-
        The reviewer's call on one row's output.


        Kept as its own enum rather than reusing the cells' ``up``/``down``
        thumbs:

        a training verdict is a judgement on a worked example, and the two
        domains

        are deliberately independent of each other.


        Only ``GOOD`` (Looks good) is given now. Needs work is a thumbs down

        (``agent_feedback``): it saves a learning and runs the example again,
        and

        the learning event is its record. ``BAD`` stays for the verdicts given

        before, each with the note that explained it.
      enum:
        - good
        - bad
      title: TrainingVerdict
      type: string
    AgentStepAction:
      description: |-
        What one agent step did.

        ``FETCH_PAGE`` is historical: the loop emits ``SCRAPE`` for the same act
        today, but stored step traces still carry the old value and must keep
        deserializing, so the member stays.
      enum:
        - search
        - fetch_page
        - map
        - scrape
        - crawl
        - mcp_tool
        - workspace_action
        - find_work_email
        - read_linkedin_profile
        - find_people_at_company
        - finish
      title: AgentStepAction
      type: string
    AgentStepOutcome:
      description: 'How one agent step ended: the structured half of its observation.'
      enum:
        - completed
        - failed
        - refused
      title: AgentStepOutcome
      type: string
  securitySchemes:
    APIKeyHeader:
      in: header
      name: X-API-Key
      type: apiKey
    HTTPBearer:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.