---
title: "List company migrations"
method: GET
path: "/plan-version-company-migrations"
tags: ["planmigrations"]
---

# List company migrations

`GET /plan-version-company-migrations`

## Query parameters

- `migration_id` string, required
- `q` string
- `status` 'cancelled' | 'completed' | 'failed' | 'in_progress' | 'pending' | 'skipped'
- `limit` integer — Page limit (default 100)
- `offset` integer — Page offset (default 0)

## Response `200`

OK

- object
  - `data` PlanVersionCompanyMigrationResponseData[], required
    - `company_id` string, required
    - `company_name` string, required
    - `completed_at` string, date-time, nullable
    - `created_at` string, date-time, required
    - `error` string, nullable
    - `error_code` 'ambiguous_subscription_item' | 'multiple_subscriptions' | 'no_price_for_interval' | 'not_on_origin_version' | 'operation_item_not_found' | 'permanent_config' | 'permanent_decline' | 'transient_decline' | 'transient_infra' | 'transient_stripe' | 'unknown' | 'would_leave_empty_subscription'
    - `id` string, required
    - `migration_id` string, required
    - `plan_version_id_from` string, nullable
    - `scheduled_for` string, date-time, nullable — When this company is expected to migrate, for a migration scheduled at the end of the billing period: the end of the company's current billing period. Only set while both the company and the migration are still pending. A value at or before the time of the request means the company has no active subscription and migrates as soon as processing runs. Null means no upcoming renewal could be determined from the company's current billing status (for example, a past-due subscription or one set to cancel); it does not mean the company will never migrate.
    - `started_at` string, date-time, nullable
    - `status` 'cancelled' | 'completed' | 'failed' | 'in_progress' | 'pending' | 'skipped', required
    - `updated_at` string, date-time, required
  - `params` object, required — Input parameters
    - `limit` integer — Page limit (default 100)
    - `migration_id` string
    - `offset` integer — Page offset (default 0)
    - `q` string
    - `status` 'cancelled' | 'completed' | 'failed' | 'in_progress' | 'pending' | 'skipped'

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Server error

## Changes

> 125 revisions in range; 62 could not be searched.

- **2026-07-15** `3baa54bf8b3f` — 2 warning
  - for the `query` request parameter `limit`, the max was set to `250.00`
  - for the `query` request parameter `limit`, the min was set to `0.00`
- **2026-06-05** `c0d7b479cd11` — 1 warning
  - added the new `operation_item_not_found` enum value to the `data/items/error_code/allOf[#/components/schemas/MigrationErrorCode]/` response property for the response status `200`
- **2026-05-27** `b059af8ebdc0` — 1 info
  - added the optional property `data/items/error_code` to the response with the `200` status

[Change history](https://skmtc.dev/schematichq/apis/schematic-api/changes/plan-version-company-migrations/get.md)

---

[API](https://skmtc.dev/schematichq/apis/schematic-api.md) · [All operations](https://skmtc.dev/schematichq/apis/schematic-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/schematichq/schematic-api/revisions/0b238e148fa1/schema)
