---
title: "Retry company migration"
method: POST
path: "/plan-version-company-migrations/{plan_version_company_migration_id}/retry"
tags: ["planmigrations"]
---

# Retry company migration

`POST /plan-version-company-migrations/{plan_version_company_migration_id}/retry`

## Request

- Base URL: `https://api.schematichq.com`
- URL: `https://api.schematichq.com/plan-version-company-migrations/{plan_version_company_migration_id}/retry`
- Auth: API key in header `X-Schematic-Api-Key`

## Path parameters

- `plan_version_company_migration_id` string, required

## 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

## Other responses

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

## Changes

> 230 revisions in range; 1 not diffed.

- **2026-08-27** `c8043d0320f5`: 1 info
  - added the optional property `data/scheduled_for` to the response with the `200` status
- **2026-08-24** `54c21fb8a4b7`: 1 warning
  - added the new `cancelled` enum value to the `data/status` response property for the response status `200`
- **2026-06-05** `c0d7b479cd11`: 1 warning
  - added the new `operation_item_not_found` enum value to the `data/error_code/allOf[#/components/schemas/MigrationErrorCode]/` response property for the response status `200`
- **2026-05-27** `b059af8ebdc0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/schematichq/apis/schematic-api/changes/plan-version-company-migrations/:plan_version_company_migration_id/retry/post.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.dev/schematichq/apis/schematic-api/revisions/64cb7e17c236?raw)
