Skip to main content

Battlecards API

The Battlecards API allows you to retrieve and manage battlecards generated for your competitors.

List Battlecards​

Get all battlecards for your workspace. Optionally filter by product ID or competitor ID.

GET /api/battlecards?productId={productId}&competitorId={competitorId}

Query Parameters​

  • productId (string, optional) - Filter battlecards by product ID
  • competitorId (string, optional) - Filter battlecards by competitor ID

Response​

{
"battlecards": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"competitorId": "competitor-id",
"myProductId": "product-id",
"mode": "ATTACK",
"content": {
"whyWeWin": [
{
"title": "Superior Feature",
"description": "We have better features",
"evidenceIds": ["evidence-id-1", "evidence-id-2"]
}
],
"whyWeLose": [
{
"title": "Competitor Advantage",
"description": "They have better pricing",
"evidenceIds": ["evidence-id-3"]
}
],
"objections": [],
"talkingPoints": []
},
"evidenceIds": ["evidence-id-1", "evidence-id-2", "evidence-id-3"],
"createdAt": "2024-01-01T00:00:00.000Z"
}
]
}

Mode Values​

  • ATTACK - Battlecard for competitive selling situations
  • DEFENSE - Battlecard for defending against competitor pitches

Get Battlecard​

Get a specific battlecard by ID. Optionally include evidence details.

GET /api/battlecards/{id}?includeEvidence=true

Path Parameters​

  • id (string, required) - Battlecard ID

Query Parameters​

  • includeEvidence (boolean, optional) - Include detailed evidence information. Defaults to false

Response (without evidence)​

{
"battlecard": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"competitorId": "competitor-id",
"myProductId": "product-id",
"mode": "ATTACK",
"content": {
"whyWeWin": [],
"whyWeLose": [],
"objections": [],
"talkingPoints": []
},
"evidenceIds": [],
"createdAt": "2024-01-01T00:00:00.000Z"
}
}

Response (with evidence)​

{
"battlecard": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"competitorId": "competitor-id",
"myProductId": "product-id",
"mode": "ATTACK",
"content": {
"whyWeWin": [
{
"title": "Superior Feature",
"description": "We have better features",
"evidenceIds": ["evidence-id-1"]
}
],
"whyWeLose": [],
"objections": [],
"talkingPoints": []
},
"evidenceIds": ["evidence-id-1"],
"createdAt": "2024-01-01T00:00:00.000Z"
},
"evidence": {
"evidence-id-1": {
"id": "evidence-id-1",
"content": "Evidence content text",
"sourceType": "WEB_PAGE",
"url": "https://example.com/source",
"title": "Source Title",
"credibilityScore": 0.95
}
}
}

Generate Battlecard​

Generate a new battlecard for a competitor and product combination.

POST /api/battlecards/{competitorId}/generate

Path Parameters​

  • competitorId (string, required) - Competitor ID

Request Body​

{
"productId": "product-id",
"mode": "ATTACK"
}

Required Fields​

  • productId (string) - Product ID to generate battlecard for
  • mode (string) - Battlecard mode: "ATTACK" or "DEFENSE"

Response​

{
"battlecard": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"competitorId": "competitor-id",
"myProductId": "product-id",
"mode": "ATTACK",
"content": {
"whyWeWin": [],
"whyWeLose": [],
"objections": [],
"talkingPoints": []
},
"evidenceIds": [],
"createdAt": "2024-01-01T00:00:00.000Z"
},
"jobId": "job-id-for-tracking-generation"
}

Battlecard generation runs asynchronously. Use the returned jobId to track progress via the Jobs API.

Error Responses​

  • 400 - Bad Request (missing required fields, invalid data)
  • 401 - Unauthorized (invalid or missing API key)
  • 403 - Forbidden (insufficient permissions)
  • 404 - Not Found (battlecard, competitor, or product doesn't exist)