---
title: "Vimond Asset Importer Service API — compact index for LLMs"
description: "Compact index for Feed Ingest — media feeds, push/pull ingest, jobs, tasks, retry/abort."
---

<!-- /openapi/asset-importer.llms.md — generated from /openapi/asset-importer.yaml; do not edit by hand -->

# Vimond Asset Importer Service API — compact index for LLMs

> Hub-maintained spec from `ais-all-in-one-service`. Pair with [feed ingest](/docs/feed-ingest/) for RSS/Atom formats and poll vs push.

- **Per-tag slices:** `/openapi/asset-importer/tags/<slug>.openapi.yml`
- Canonical YAML: `/openapi/asset-importer.yaml`
- Scalar: `/reference/asset-importer/`
- Guide: [feed-ingest](/docs/feed-ingest/)

## API basics

- **Base URL:** `https://{tenant}.asset-importer.{environment}.vmnd.tv`
- **Auth:** Bearer JWT — tenant from token ([api-authentication](/docs/api-authentication/)).
- **Feeds:** `POST /company/{companyId}/mediaFeeds` → push Atom (`POST /ais/feed/{mediaFeedId}/v2/schedule`) or poll on cron.
- **Jobs/tasks:** `GET …/jobs`, `GET …/tasks`; retry/abort via `GET /ais/api/job/{jobId}/retry` and `GET /ais/api/job/{jobId}/abort`.
- **Dashboard:** `/dashboard/*` is DB-heavy — do not poll aggressively; use `companyId`, prefer `days=1` where applicable (default is 30).
- **Legacy VCC:** Some deployments alias `/cms/api/batch-import/…` to these routes.

## Tags overview

| Tag | Operations | Per-tag slice | Description |
|-----|------------|---------------|-------------|
| Status | 2 | [`openapi/asset-importer/tags/status.openapi.yml`](/openapi/asset-importer/tags/status.openapi.yml) | Health and version probes. |
| Media feeds | 8 | [`openapi/asset-importer/tags/media-feeds.openapi.yml`](/openapi/asset-importer/tags/media-feeds.openapi.yml) | CRUD and status for feed definitions bound to a publisher (`companyId`). |
| Push ingest | 2 | [`openapi/asset-importer/tags/push-ingest.openapi.yml`](/openapi/asset-importer/tags/push-ingest.openapi.yml) | Push an Atom feed payload to start an import job (PUSH feeds). |
| Import jobs | 2 | [`openapi/asset-importer/tags/import-jobs.openapi.yml`](/openapi/asset-importer/tags/import-jobs.openapi.yml) | List and fetch import jobs for a media feed. |
| Import tasks | 2 | [`openapi/asset-importer/tags/import-tasks.openapi.yml`](/openapi/asset-importer/tags/import-tasks.openapi.yml) | Per-asset tasks within an import job. |
| Job control | 4 | [`openapi/asset-importer/tags/job-control.openapi.yml`](/openapi/asset-importer/tags/job-control.openapi.yml) | Manual retry and abort for jobs, tasks, or assets. |
| Dashboard | 7 | [`openapi/asset-importer/tags/dashboard.openapi.yml`](/openapi/asset-importer/tags/dashboard.openapi.yml) | Aggregated ingest statistics and error views. **Heavy on the database** — do not poll these endpoints aggressively or use them as a general monitoring API. |

## Operations

### Tag: Status (2)

**Per-tag slice:** [`/openapi/asset-importer/tags/status.openapi.yml`](/openapi/asset-importer/tags/status.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Health and version probes.

#### GET /ping — `ping`
**Tag:** Status • **Auth:** public • **Responses:** 200
**Ping**

#### GET /version — `getVersion`
**Tag:** Status • **Auth:** public • **Responses:** 200
**Service version**

### Tag: Media feeds (8)

**Per-tag slice:** [`/openapi/asset-importer/tags/media-feeds.openapi.yml`](/openapi/asset-importer/tags/media-feeds.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

CRUD and status for feed definitions bound to a publisher (`companyId`).

#### GET /allMediaFeeds — `listAllMediaFeeds`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 200
**List all media feeds (tenant)**
Returns all feed definitions visible to the authenticated tenant. Legacy CMS alias `GET /cms/api/batch-import/feeds`.

#### GET /company/{companyId}/mediaFeeds — `listMediaFeeds`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 200
path: companyId • query: start, size
**List media feeds for a publisher**

#### POST /company/{companyId}/mediaFeeds — `createMediaFeed`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 200
path: companyId
**Create a media feed**
Do not include `id` in the body — the server assigns one. Legacy CMS alias `POST /cms/api/batch-import/feeds` (with `companyId` in path).

#### GET /company/{companyId}/mediaFeeds/{id} — `getMediaFeed`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 200, 404
path: companyId, id
**Get a media feed**

#### PUT /company/{companyId}/mediaFeeds/{id} — `updateMediaFeed`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 200, 404
path: companyId, id
**Update a media feed (whole object)**

#### DELETE /company/{companyId}/mediaFeeds/{id} — `deleteMediaFeed`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 204, 404
path: companyId, id
**Delete a media feed**

#### POST /company/{companyId}/mediaFeeds/{id}/scheduleImmediate — `scheduleMediaFeedImmediate`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 200, 409
path: companyId, id
**Trigger immediate pull import**
Sets the feed ready for immediate import when its checker state is `DONE`.

#### GET /company/{companyId}/mediaFeeds/{id}/status — `getMediaFeedStatus`
**Tag:** Media feeds • **Auth:** VimondAuth • **Responses:** 200
path: companyId, id
**Get feed checker status**

### Tag: Push ingest (2)

**Per-tag slice:** [`/openapi/asset-importer/tags/push-ingest.openapi.yml`](/openapi/asset-importer/tags/push-ingest.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Push an Atom feed payload to start an import job (PUSH feeds).

#### POST /ais/feed/{mediaFeedId}/schedule — `pushFeed`
**Tag:** Push ingest • **Auth:** VimondAuth • **Responses:** 204 • **deprecated**
path: mediaFeedId
**Push Atom feed (deprecated)**
Deprecated — empty response; prefer `POST …/v2/schedule` which returns the import job.

#### POST /ais/feed/{mediaFeedId}/v2/schedule — `pushFeedV2`
**Tag:** Push ingest • **Auth:** VimondAuth • **Responses:** 200, 400, 403
path: mediaFeedId
**Push Atom feed (recommended)**
Push an Atom feed body to a **PUSH** media feed. Returns the created **ImportJob** for tracking.

### Tag: Import jobs (2)

**Per-tag slice:** [`/openapi/asset-importer/tags/import-jobs.openapi.yml`](/openapi/asset-importer/tags/import-jobs.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

List and fetch import jobs for a media feed.

#### GET /company/{companyId}/mediaFeeds/{mediaFeedId}/jobs — `listImportJobs`
**Tag:** Import jobs • **Auth:** VimondAuth • **Responses:** 200
path: companyId, mediaFeedId • query: state, start, size, fromDate, toDate
**List import jobs for a feed**

#### GET /company/{companyId}/mediaFeeds/{mediaFeedId}/jobs/{id} — `getImportJob`
**Tag:** Import jobs • **Auth:** VimondAuth • **Responses:** 200, 404
path: companyId, mediaFeedId, id
**Get import job by id**

### Tag: Import tasks (2)

**Per-tag slice:** [`/openapi/asset-importer/tags/import-tasks.openapi.yml`](/openapi/asset-importer/tags/import-tasks.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Per-asset tasks within an import job.

#### GET /company/{companyId}/mediaFeeds/{mediaFeedId}/jobs/{importJobId}/tasks — `listImportTasks`
**Tag:** Import tasks • **Auth:** VimondAuth • **Responses:** 200
path: companyId, mediaFeedId, importJobId • query: state, start, size
**List import tasks for a job**

#### GET /company/{companyId}/mediaFeeds/{mediaFeedId}/jobs/{importJobId}/tasks/{id} — `getImportTask`
**Tag:** Import tasks • **Auth:** VimondAuth • **Responses:** 200, 404
path: companyId, mediaFeedId, importJobId, id
**Get import task by id**

### Tag: Job control (4)

**Per-tag slice:** [`/openapi/asset-importer/tags/job-control.openapi.yml`](/openapi/asset-importer/tags/job-control.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Manual retry and abort for jobs, tasks, or assets.

#### GET /ais/api/asset/{assetId}/retry — `retryAssetImport`
**Tag:** Job control • **Auth:** VimondAuth • **Responses:** 200
path: assetId
**Retry last import for asset**

#### GET /ais/api/job/{jobId}/abort — `abortImportJob`
**Tag:** Job control • **Auth:** VimondAuth • **Responses:** 200
path: jobId
**Abort import job**
Stops processing for the job. (Legacy CMS docs may show `PUT`; the service uses **GET**.)

#### GET /ais/api/job/{jobId}/retry — `retryImportJob`
**Tag:** Job control • **Auth:** VimondAuth • **Responses:** 200
path: jobId
**Retry import job**
Restarts all tasks in the job. (Legacy CMS docs may show `PUT`; the service uses **GET**.)

#### GET /ais/api/task/{taskId}/retry — `retryImportTask`
**Tag:** Job control • **Auth:** VimondAuth • **Responses:** 200
path: taskId
**Retry import task**

### Tag: Dashboard (7)

**Per-tag slice:** [`/openapi/asset-importer/tags/dashboard.openapi.yml`](/openapi/asset-importer/tags/dashboard.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Aggregated ingest statistics and error views.

#### GET /dashboard/feeds — `getDashboardFeedCounts`
**Tag:** Dashboard • **Auth:** VimondAuth • **Responses:** 200
query: companyId
**Dashboard feed counts**
Expensive aggregate — pass `companyId`; do not poll frequently.

#### GET /dashboard/feeds/errors — `getDashboardFeedErrors`
**Tag:** Dashboard • **Auth:** VimondAuth • **Responses:** 200
query: companyId
**Feeds with errors**
Expensive aggregate — pass `companyId`; do not poll frequently.

#### GET /dashboard/tasks — `getDashboardTaskStats`
**Tag:** Dashboard • **Auth:** VimondAuth • **Responses:** 200
query: companyId, days, feedId
**Task statistics (recent days)**
Prefer `days=1` and `companyId`; avoid frequent polling.

#### GET /dashboard/tasks/company — `getDashboardTaskStatsByCompany`
**Tag:** Dashboard • **Auth:** VimondAuth • **Responses:** 200
query: companyId, days
**Task statistics by company and feed**
Prefer `days=1` and `companyId`; avoid frequent polling.

#### GET /dashboard/tasks/date — `getDashboardTaskStatsByDate`
**Tag:** Dashboard • **Auth:** VimondAuth • **Responses:** 200
query: companyId, days
**Task statistics by day**
Prefer `days=1` and `companyId`; avoid frequent polling.

#### GET /dashboard/tasks/errors/metadata — `getDashboardMetadataErrors`
**Tag:** Dashboard • **Auth:** VimondAuth • **Responses:** 200
query: companyId, days, feedId
**Recent metadata import errors**
Prefer `days=1`, `companyId`, and `feedId` when possible; avoid frequent polling.

#### GET /dashboard/tasks/errors/video — `getDashboardVideoErrors`
**Tag:** Dashboard • **Auth:** VimondAuth • **Responses:** 200
query: companyId, days, feedId
**Recent video import errors**
Prefer `days=1`, `companyId`, and `feedId` when possible; avoid frequent polling.

---

_Generated from `/openapi/asset-importer.yaml` — 27 operations across 7 tags. Re-run `npm run openapi-derivatives` to refresh._
