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

# Archive plan experiment

> Stop selling the experiment. Its code sells the plan's current version from then on, so links already shared keep working. Choose what happens to its subscribers: keep them on its versions, or move them to the current version at their renewal or now. If any of them does not fit, nothing changes and the response lists each one with what would make it fit, to send back in changes.

Stop selling the experiment. Its code sells the plan's current version from then on, so links already shared keep working. Choose what happens to its subscribers: keep them on its versions, or move them to the current version at their renewal or now. If any of them does not fit, nothing changes and the response lists each one with what would make it fit, to send back in changes.


## OpenAPI

````yaml /openapi/es/rest/2026-08-27.json post /plans/{id}/experiments/{code}/archive
openapi: 3.1.0
info:
  title: Commet API
  version: '2026-08-27'
  description: Billing and payments API for SaaS and AI products.
servers:
  - url: https://commet.co/api/v1
security:
  - ApiKeyAuth: []
tags:
  - name: Test Clock
    description: >-
      Simulate the passage of time in sandbox to test billing flows. Mirrors
      Stripe test clocks: forward-only and sandbox-only.
  - name: Customers
  - name: Subscriptions
  - name: Plans
  - name: Markets
    description: >-
      Reusable country groups for market-specific prices and selectable price
      variants.
  - name: Offers
  - name: Promo Codes
  - name: Features
  - name: Usage
  - name: Seats
  - name: Quota
  - name: Add-ons
  - name: Portal
  - name: Credit Packs
  - name: Plan Groups
  - name: Invoices
  - name: Payments
    description: >-
      One-time payments with no subscription or plan. Charge a customer's saved
      payment method off-session, or create a payment link the customer opens to
      pay. Tax, invoice, and receipt are handled automatically.
  - name: Transactions
  - name: Webhooks
  - name: API Keys
  - name: Payouts
    description: >-
      Withdraw available balance to your bank and manage the payout account
      (verification + destination bank accounts).
  - name: Provisioning
    description: >-
      Take ownership of an organization an agent provisioned headlessly. The
      agent holds the API keys from the start; a human claims the account
      through a claim link.
paths:
  /plans/{id}/experiments/{code}/archive:
    post:
      tags:
        - Plans
      summary: Archive plan experiment
      description: >-
        Stop selling the experiment. Its code sells the plan's current version
        from then on, so links already shared keep working. Choose what happens
        to its subscribers: keep them on its versions, or move them to the
        current version at their renewal or now. If any of them does not fit,
        nothing changes and the response lists each one with what would make it
        fit, to send back in changes.
      operationId: archive-plan-experiment
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Unique key used to safely retry this write for 24 hours without
            applying it twice.
          schema:
            type: string
            minLength: 1
            maxLength: 200
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: code
          in: path
          required: true
          schema:
            type: string
            description: 'The experiment''s own code, without the plan code: price-test.'
        - name: Commet-Version
          in: header
          required: false
          description: >-
            API version used by this reference. Send this header to select this
            contract explicitly.
          schema:
            type: string
            default: '2026-08-27'
          example: '2026-08-27'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              default:
                subscribers: keep
                changes: []
                preview: false
              type: object
              properties:
                subscribers:
                  default: keep
                  description: >-
                    What happens to the experiment's subscribers: keep them on
                    its versions, move them to the plan's current version at
                    their next renewal, or move them now. Nobody moves, and the
                    experiment keeps running, unless every one of them fits or
                    has a change.
                  type: string
                  enum:
                    - keep
                    - period_end
                    - now
                changes:
                  default: []
                  description: >-
                    Per-subscriber changes that make each one fit, applied at
                    its renewal.
                  type: array
                  items:
                    type: object
                    properties:
                      subscriptionId:
                        type: string
                      keepOnVersion:
                        description: Leave this subscriber on its version.
                        type: boolean
                        const: true
                      billingInterval:
                        type: string
                        enum:
                          - weekly
                          - monthly
                          - quarterly
                          - semiannual
                          - yearly
                      seatLimit:
                        description: Lower its seats to the version's limit at renewal.
                        type: boolean
                        const: true
                      removeAddonIds:
                        description: Add-ons it stops paying at renewal.
                        type: array
                        items:
                          type: string
                    required:
                      - subscriptionId
                preview:
                  default: false
                  description: Check the archive and the move without changing anything.
                  type: boolean
      responses:
        '200':
          description: Success
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
            RateLimit-Limit:
              description: Maximum number of requests allowed in the current window.
              schema:
                type: string
            RateLimit-Remaining:
              description: Requests remaining in the current window.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanExperimentArchive'
              example:
                experiment:
                  id: pex_1a2b3c4d
                  code: pro:price-test
                  status: archived
                  startedFromVersionId: plr_5e6f7g8h
                  latestVersionId: plr_1a2b3c4d
                  sellsVersionId: plr_5e6f7g8h
                  subscriptionCount: 7
                  createdAt: '2026-09-07T12:00:00.000Z'
                  closedAt: '2026-10-07T12:00:00.000Z'
                  object: plan_experiment
                moveId: pvm_5e6f7g8h
        '400':
          description: Bad request
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: validation_error
                  code: validation_error
                  message: The request contains an invalid parameter.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/validation_error.md
        '401':
          description: Unauthorized
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: authentication_error
                  code: unauthorized
                  message: A valid API key is required.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/unauthorized.md
        '403':
          description: Forbidden
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: authentication_error
                  code: forbidden
                  message: You do not have permission to perform this operation.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/forbidden.md
        '404':
          description: Not found
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: not_found_error
                  code: not_found
                  message: The requested resource was not found.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/not_found.md
        '409':
          description: Conflict
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: conflict_error
                  code: idempotency_in_progress
                  message: >-
                    A request with this idempotency key is still being
                    processed.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_in_progress.md
        '429':
          description: Too many requests
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
            RateLimit-Limit:
              description: Maximum number of requests allowed in the current window.
              schema:
                type: string
            RateLimit-Remaining:
              description: Requests remaining in the current window.
              schema:
                type: string
            RateLimit-Reset:
              description: Seconds until the rate limit window resets.
              schema:
                type: string
            Retry-After:
              description: Seconds to wait before retrying the request.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: rate_limit_error
                  code: rate_limited
                  message: >-
                    Too many requests. Retry after the interval specified in the
                    Retry-After header.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/rate_limited.md
        '500':
          description: Internal server error
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: internal_error
                  code: internal_error
                  message: An unexpected error occurred while processing the request.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/internal_error.md
        '503':
          description: Service unavailable
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: internal_error
                  code: idempotency_unavailable
                  message: >-
                    Idempotency storage is temporarily unavailable. Retry with
                    the same idempotency key.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_unavailable.md
components:
  headers:
    RequestId:
      description: >-
        Server-generated identifier that correlates this response with Platform
        logs.
      schema:
        type: string
        format: uuid
  schemas:
    PlanExperimentArchive:
      type: object
      properties:
        experiment:
          type: object
          properties:
            id:
              type: string
              description: Public plan experiment ID.
            code:
              type: string
              description: >-
                The code to sell it with as planCode, such as pro:price-test. It
                always sells the experiment's latest version while running, and
                the plan's current version once closed.
            status:
              type: string
              enum:
                - running
                - won
                - archived
              description: >-
                running sells its latest version; won became the plan's current
                version; archived stopped selling.
            startedFromVersionId:
              type: string
              description: The plan's version that was current when it started.
            latestVersionId:
              type: string
              description: Its latest version.
            sellsVersionId:
              type: string
              description: The version its code sells to new buyers today.
            subscriptionCount:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: >-
                Active, trialing, past due and paused subscriptions on its
                versions.
            createdAt:
              type: string
              format: date-time
            closedAt:
              anyOf:
                - type: string
                  format: date-time
                - type: 'null'
          required:
            - id
            - code
            - status
            - startedFromVersionId
            - latestVersionId
            - sellsVersionId
            - subscriptionCount
            - createdAt
            - closedAt
          additionalProperties: false
        moveId:
          description: The move of its subscribers, or null when they stay.
          type:
            - string
            - 'null'
        object:
          type: string
          const: plan_experiment_archive
        livemode:
          type: boolean
      required:
        - experiment
        - moveId
        - object
        - livemode
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
            code:
              type: string
            message:
              type: string
            param:
              type: string
            details: {}
            doc_url:
              type: string
          required:
            - type
            - code
            - message
            - doc_url
          additionalProperties: false
      required:
        - error
      additionalProperties: false
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````

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