List inventory feed workflows
List the inventory feed workflows that match your filters, with their rules and latest uploaded file.
GET
AuthBearer token (console user)Rate limitNot documentedProcessingDatabase reads per workflow, plus link signing for the latest file.
You can filter by enterpriseId, teamId, partnerId, dealerId, isActive and a created-date range. Each workflow comes with its active rules (with conditions) and its latest uploaded file, whose s3_url is a temporary signed link. A rooftop's IMS workflow is the one whose partnerProviderTypes contains IMS. All filters are optional; with no filters every workflow is returned.
Before you call it
- You need the bearer token of a signed-in console user. The route does not check that the rooftop belongs to the caller.
- Always send
enterpriseIdandteamIdto scope the result to one rooftop. The UI also filters the result toteamIdandisActive: trueitself. - Database reads per workflow, plus link signing for the latest file. Rate limit: not documented.
Request parameters
Requiredalways sendOptionalcan be left outRequired ifrequired only in the case described
| Parameter | Type | Required | Description |
|---|---|---|---|
| Header | — | — | — |
Authorization | string | Required | Bearer YOUR_TOKEN |
| Query | — | — | — |
enterpriseId | string | Optional | <enterpriseId>. Send it to scope the result. |
teamId | string | Optional | <teamId>. Send it to scope the result. |
partnerId | string | Optional | Partner id. Must be a valid id of an existing partner. |
dealerId | string | Optional | The rooftop's id at the partner. |
isActive | string | Optional | true or false. |
startDate, endDate | string | Required if | Created-date range. Send both or neither. |
Request checklist
- Authenticate: set
Authorization: Bearer YOUR_TOKEN. - Scope it: send
enterpriseIdandteamId. - Find the IMS workflow: pick the active workflow whose
partnerProviderTypescontainsIMS. Keep its_idto update it.
Sample request
curl -X GET "https://api.spyne.ai/partner/input-workflow?enterpriseId=<enterpriseId>&teamId=<teamId>" \
-H "Authorization: Bearer YOUR_TOKEN"import requests
res = requests.get(
"https://api.spyne.ai/partner/input-workflow",
params={"enterpriseId": "<enterpriseId>", "teamId": "<teamId>"},
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
workflows = [
w for w in res.json()["data"]
if w.get("isActive") and "IMS" in (w.get("partnerProviderTypes") or [])
]const qs = new URLSearchParams({ enterpriseId: "<enterpriseId>", teamId: "<teamId>" });
const res = await fetch(`https://api.spyne.ai/partner/input-workflow?${qs}`, {
headers: { Authorization: "Bearer YOUR_TOKEN" },
});
const { data } = await res.json();Sample response
{
"success": true,
"message": "Input workflows retrieved successfully",
"data": [
{
"_id": "<workflowId>",
"name": "Example Inventory Feed - Inventory Provider",
"enterpriseId": "<enterpriseId>",
"teamId": "<teamId>",
"userId": "<userId>",
"partnerId": "<partnerId>",
"dealerId": "<dealerId>",
"isActive": true,
"createDraft": true,
"reseller": false,
"partnerProviderTypes": ["IMS"],
"thresholdCounts": { "newCars": -1, "usedCars": -1 },
"preliminaryConfigs": { "enabled": false, "thresholds": { "new": -1, "used": -1 } },
"productOptions": { "spin": false, "catalog": false, "featureVideo": false, "mediaKit": false, "conversationalAi": false },
"processingConfigs": {},
"includeImageId": false,
"isCgiFlowEnabled": false,
"customIntegrations": {},
"rules": [],
"latestFileUpload": null,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}{ "success": false, "message": "Validation failed", "errors": ["Both startDate and endDate must be provided together"] }{ "success": false, "error": "Authentication token required" }{ "success": false, "message": "Failed to retrieve input workflows", "error": "<error message>" }Response parameters
| Parameter | Type | Description |
|---|---|---|
success | boolean | true on success. |
message | string | Result message. |
data | array | Matching workflows. |
data[]._id | string | Workflow id. Use it to update the workflow. |
data[].name | string | Workflow name. |
data[].enterpriseId, teamId | string | Dealer group and rooftop. |
data[].userId | string | Owner user of the dealer group, set at create time. |
data[].partnerId | string | Feed partner, from List inventory and history partners. |
data[].dealerId | string | The rooftop's id at the partner. |
data[].isActive | boolean | Whether the feed is active. |
data[].createDraft | boolean | Draft flag sent by the UI. |
data[].reseller | boolean | Set from the rooftop's reseller status at create time. |
data[].partnerProviderTypes | string[] | IMS, PHOTO, CGI. |
data[].thresholdCounts | object | newCars and usedCars. -1 means disabled. |
data[].preliminaryConfigs | object | enabled and thresholds (new, used). Lower image-count bar for IMS workflows. |
data[].productOptions | object | spin, catalog, featureVideo, mediaKit, conversationalAi flags. |
data[].processingConfigs | object | Media processing ids (background, number plate, banner, video, voice, music) and aiHotspot. |
data[].includeImageId, isCgiFlowEnabled | boolean | Partner-specific flags. |
data[].customIntegrations | object | Partner add-ons, as stored. Empty when none. |
data[].customIntegrations.evox.access_token | string | Present only when the Evox add-on is set. Credential field returned by the API. Never log or display it. |
data[].rules | array | Active rules, each with processingConfigs and conditions. |
data[].latestFileUpload | object or null | Latest uploaded feed file. s3_url is a temporary signed link. |
Errors
| Status | Code | When it happens |
|---|---|---|
400 | Validation failed | Invalid or unknown partnerId, isActive not true or false, only one of startDate and endDate, invalid dates, or startDate after endDate. |
401 | Authentication token required or Invalid Authentication | Missing or rejected token. |
500 | Failed to retrieve input workflows | Database or link signing error. |
What happens next
If there is an active IMS workflow, show it and update it. If not, create one.
Updated about 2 hours ago
Did this page help you?
