List inventory and history partners
List the active inventory feed, photo, CGI or vehicle history partners a rooftop can pick from.
GET
AuthBearer token (console user)Rate limitNot documentedProcessingOne database read.
Returns every active partner whose partnerProviderTypes contains the given category, newest first. Each item's _id is the partnerId you send in an inventory feed workflow or a vehicle history save. These ids are not the same as the registry ids from List CRM and scheduler partners. The full stored partner record is returned; no fields are filtered out.
Before you call it
- You need the bearer token of a signed-in console user.
- The UI sends
category=IMSfor the inventory feed,PHOTOandCGIfor media partners on the same page, andcategory=CarHistoryfor vehicle history. The value is matched exactly. - One database read. Rate limit: not documented.
Request parameters
Requiredalways sendOptionalcan be left out
| Parameter | Type | Required | Description |
|---|---|---|---|
| Header | — | — | — |
Authorization | string | Required | Bearer YOUR_TOKEN |
| Query | — | — | — |
category | string | Optional | One value from the partner's partnerProviderTypes, for example IMS, PHOTO, CGI, CarHistory. Leave it out to get all active partners. |
Request checklist
- Authenticate: set
Authorization: Bearer YOUR_TOKEN. - Filter: pass
category. - Keep the pick: keep
_id,nameandlogofrom the item the user picks.
Sample request
curl -X GET "https://api.spyne.ai/partner/category?category=CarHistory" \
-H "Authorization: Bearer YOUR_TOKEN"import requests
res = requests.get(
"https://api.spyne.ai/partner/category",
params={"category": "IMS"},
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
partners = res.json()["data"]const res = await fetch(
"https://api.spyne.ai/partner/category?category=IMS",
{ headers: { Authorization: "Bearer YOUR_TOKEN" } }
);
const { data: partners } = await res.json();Sample response
{
"success": true,
"data": [
{
"_id": "<partnerId>",
"name": "Example Inventory Feed",
"logo": "https://example.com/logo.png",
"isActive": true,
"partnerProviderTypes": ["IMS"],
"isCgiOnlyPartner": false,
"fetchInventory": false,
"ftpConfigs": {
"inputSftpConfigs": { "protocol": "SFTP", "hostname": "<redacted>", "port": 22, "path": "/example/inbound", "secure": true, "username": "<redacted>", "password": "<redacted>" },
"outputSftpConfigs": { "protocol": "SFTP", "hostname": "<redacted>", "port": 22, "path": "/example/outbound", "secure": true, "username": "<redacted>", "password": "<redacted>" }
},
"apiConfig": {
"stockAPI": { "method": "GET", "url": "https://example.com/stock" },
"authenticationAPI": { "method": "POST", "url": "https://example.com/auth", "accessKey": "<redacted>", "secretKey": "<redacted>", "headers": {} }
},
"fileFormat": { "inputFileFormat": { "...": "..." }, "outputFileFormat": { "...": "..." } },
"pushConfigs": { "sendOutputOnIncomingFeed": false, "pushCombineFile": false, "dealerLevelFtpConfig": false, "outputFrequency": "0 0 */8 * * *" },
"misc_configs": {},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}{ "success": false, "error": "Authentication token required" }{ "success": false, "error": "Invalid Authentication" }{ "success": false, "error": "<error message>" }Response parameters
| Parameter | Type | Description |
|---|---|---|
success | boolean | true on success. |
data | array | Active partners matching category, newest first. |
data[]._id | string | Partner id. Send it as partnerId. |
data[].name | string | Partner name. Send it as partnerName for vehicle history. |
data[].logo | string | Logo URL. Required by the vehicle history save. |
data[].partnerProviderTypes | string[] | Categories this partner serves. |
data[].isCgiOnlyPartner | boolean | If true, a workflow created for this partner gets the CGI flow turned on. |
data[].ftpConfigs | object | Partner feed connection settings: inputSftpConfigs and outputSftpConfigs, each with protocol (FTP or SFTP), port, path, secure, hostname, username, password. |
data[].ftpConfigs.*.hostname, username, password | string | Credential field returned by the API. Never log or display it. |
data[].fileFormat | object | Input and output file mapping. |
data[].apiConfig | object | Optional. Partner API settings: stockAPI and authenticationAPI (method, url, headers). |
data[].apiConfig.authenticationAPI.accessKey, secretKey | string | Credential field returned by the API. Never log or display it. |
data[].pushConfigs, misc_configs, inventoryMapping, mediaMetadataConfig | object | Other stored partner settings. |
Errors
| Status | Code | When it happens |
|---|---|---|
401 | Authentication token required | No Authorization header, or it does not start with Bearer. |
401 | Invalid Authentication | User management rejects the token with a 4xx. |
500 | Error message | User management is unreachable, or the database read fails. |
What happens next
For vehicle history, save the pick with entity: "CAR_HISTORY". For the inventory feed, create a workflow.
Updated about 1 hour ago
Did this page help you?
