# Create a Batch Job

Creates a new batch job.

#### Create a batch job

#### Create a batch job

## Request

```curl
curl -X POST https://api.stripe.com/v2/core/batch_jobs \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-06-24.preview" \
  --json '{
    "endpoint": {
        "path": "/v1/subscriptions/:subscription/migrate",
        "http_method": "post"
    },
    "metadata": {},
    "skip_validation": false
  }'
```

### Response

```json
{
  "id": "batchv2_AbCdEfGhIjKlMnOpQrStUvWxYz",
  "object": "v2.core.batch_job",
  "created": "2026-03-09T20:55:31.000Z",
  "metadata": {},
  "skip_validation": false,
  "status": "ready_for_upload",
  "status_details": {
    "ready_for_upload": {
      "upload_url": {
        "expires_at": "2026-03-09T21:00:31.000Z",
        "url": "https://stripeusercontent.com/files/upload/..."
      }
    }
  }
}
```

#### Create with skip validation

#### Create with skip validation

## Request

```curl
curl -X POST https://api.stripe.com/v2/core/batch_jobs \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-06-24.preview" \
  --json '{
    "endpoint": {
        "path": "/v1/customers/:customer",
        "http_method": "post"
    },
    "skip_validation": true,
    "metadata": {
        "batch_id": "run_abc123"
    }
  }'
```

### Response

```json
{
  "id": "batchv2_BcDeFgHiJkLmNoPqRsTuVwXyZa",
  "object": "v2.core.batch_job",
  "created": "2026-03-09T20:55:31.000Z",
  "metadata": {
    "batch_id": "run_abc123"
  },
  "skip_validation": true,
  "status": "ready_for_upload",
  "status_details": {
    "ready_for_upload": {
      "upload_url": {
        "expires_at": "2026-03-09T21:00:31.000Z",
        "url": "https://stripeusercontent.com/files/upload/..."
      }
    }
  }
}
```

## Parameters

- [`endpoint`](https://docs.stripe.com/api/v2/core/batch-jobs/create.md?query=endpoint&api-version=2026-06-24.preview) (object, required)
  The endpoint configuration for the batch job.

- `skip_validation` (boolean, required)
  Allows the user to skip validation.

- `metadata` (map, optional)
  The metadata of the `batch_job`.

- [`notification_suppression`](https://docs.stripe.com/api/v2/core/batch-jobs/create.md?query=notification_suppression&api-version=2026-06-24.preview) (object, optional)
  Notification suppression settings for the batch job.

## Returns

Returns a [Batch Job object](https://docs.stripe.com/api/v2/core/batch-jobs/object.md?api-version=2026-06-24.preview).

## Error Codes

| HTTP status code | Code | Description |
| --- | --- | --- |
| 400 | auth_unauthorized_endpoint | Returned when merchant isn’t allowed to access endpoint. |
| 400 | batch_api_unsupported_endpoint | Returned when using an invalid endpoint. |
| 400 | stripe_api_version_not_provided | Returned when the Stripe API version is not provided on the request. |
