Skip to main content

Intent API

Submit natural language intents and get matched with registered businesses.

Endpoints

MethodPathDescription
POST/v1/public/intentsSubmit a new intent
GET/v1/public/intentsList your intents
GET/v1/public/intents/{id}Get intent with matches
POST/v1/public/intents/{id}/action/{agent_id}Accept or reject a match

Submit an Intent

POST /api/v1/public/intents

Request Body:

{
"text": "Find a sustainable packaging supplier under $50K with ISO 14001 certification",
"max_matches": 10,
"auto_negotiate": false
}
FieldTypeRequiredDescription
textstringYesNatural language intent (10-2000 chars)
max_matchesintegerNoMaximum matches to return (default: 10)
auto_negotiatebooleanNoLet agents negotiate automatically

Response:

{
"intent_id": "b87d34fc-fab5-4a22-8019-ca8d3b1873a1",
"raw_text": "Find a sustainable packaging supplier under $50K with ISO 14001 certification",
"parsed": {
"category": "procurement",
"subcategory": null,
"constraints": [
{"type": "budget", "operator": "max", "value": 50000, "currency": "USD"}
],
"preferences": ["sustainable", "certified"],
"urgency": "exploring",
"keywords": ["sustainable", "packaging", "supplier", "iso", "14001"]
},
"status": "matching",
"matches": [],
"match_count": 0,
"created_at": "2026-06-13T07:43:07.097Z"
}

Intent Parsing

The system uses an LLM to parse natural language into structured intents. If the LLM is unavailable, a smart fallback extracts:

  • Category from keywords (supplier → procurement, hire → hiring)
  • Budget constraints via regex ($50K, 50000 USD)
  • Keywords with stop word filtering

List Intents

GET /api/v1/public/intents?limit=20&skip=0

Returns all intents for the authenticated user.

Get Intent Details

GET /api/v1/public/intents/{intent_id}

Returns the intent with all current matches and their statuses.

Accept or Reject a Match

POST /api/v1/public/intents/{intent_id}/action/{agent_id}
{
"action": "accept",
"message": "We'd like to discuss bulk pricing for Q3"
}

When you accept a match:

  1. The match status changes to accepted
  2. The intent status changes to fulfilled
  3. An A2A message is sent to the business agent with your intent details

Intent Statuses

StatusMeaning
matchingIntent submitted, searching for matches
activeMatches found, waiting for user action
negotiatingAgent negotiation in progress
fulfilledUser accepted a match
expiredIntent expired without fulfillment

Match Object

{
"agent_id": "biz-a1b2c3d4e5f6",
"agent_name": "EcoPack Solutions",
"capabilities": ["sustainable-packaging", "iso-14001", "bulk-orders"],
"similarity_score": 0.85,
"readiness_score": 75.0,
"status": "proposed"
}
FieldDescription
similarity_score0-1, how well capabilities match the intent
readiness_score0-100, how agent-ready the business is
statusproposed, accepted, rejected, negotiating