List inventory and history partners

List the active inventory feed, photo, CGI or vehicle history partners a rooftop can pick from.

GEThttps://api.spyne.ai/partner/category
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=IMS for the inventory feed, PHOTO and CGI for media partners on the same page, and category=CarHistory for vehicle history. The value is matched exactly.
  • One database read. Rate limit: not documented.

Request parameters

Requiredalways sendOptionalcan be left out
ParameterTypeRequiredDescription
Header———
AuthorizationstringRequiredBearer YOUR_TOKEN
Query———
categorystringOptionalOne value from the partner's partnerProviderTypes, for example IMS, PHOTO, CGI, CarHistory. Leave it out to get all active partners.
Request checklist
  1. Authenticate: set Authorization: Bearer YOUR_TOKEN.
  2. Filter: pass category.
  3. Keep the pick: keep _id, name and logo from 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

ParameterTypeDescription
successbooleantrue on success.
dataarrayActive partners matching category, newest first.
data[]._idstringPartner id. Send it as partnerId.
data[].namestringPartner name. Send it as partnerName for vehicle history.
data[].logostringLogo URL. Required by the vehicle history save.
data[].partnerProviderTypesstring[]Categories this partner serves.
data[].isCgiOnlyPartnerbooleanIf true, a workflow created for this partner gets the CGI flow turned on.
data[].ftpConfigsobjectPartner feed connection settings: inputSftpConfigs and outputSftpConfigs, each with protocol (FTP or SFTP), port, path, secure, hostname, username, password.
data[].ftpConfigs.*.hostname, username, passwordstringCredential field returned by the API. Never log or display it.
data[].fileFormatobjectInput and output file mapping.
data[].apiConfigobjectOptional. Partner API settings: stockAPI and authenticationAPI (method, url, headers).
data[].apiConfig.authenticationAPI.accessKey, secretKeystringCredential field returned by the API. Never log or display it.
data[].pushConfigs, misc_configs, inventoryMapping, mediaMetadataConfigobjectOther stored partner settings.

Errors

StatusCodeWhen it happens
401Authentication token requiredNo Authorization header, or it does not start with Bearer.
401Invalid AuthenticationUser management rejects the token with a 4xx.
500Error messageUser 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.


Did this page help you?