Skip to content
Reponse.ai LogoDocs
DocsAPISDKsGuides

Search Documentation

Search for an article...

Getting Started

  • Overview
  • Architecture
  • Installation
  • Authentication
  • First Request

Products & Collections

  • Products — List
  • Products — Get
  • Products — Metafields
  • Collections — List
  • Collections — Get
  • Collections — Products

Cart & Checkout

  • Cart — Create
  • Cart — Get
  • Cart — Add Item
  • Cart — Update Item
  • Cart — Remove Item
  • Cart — Apply Promotion
  • Checkout — Stripe
  • Checkout — Payment Intent
  • Checkout — ACP

Orders & Fulfillment

  • Orders — Create
  • Orders — Get
  • Orders — Confirm
  • Orders — Cancel
  • Orders — Fulfill
  • Orders — Refund

Commerce

  • Inventory — Get
  • Inventory — Update
  • Shipping — Rates
  • Discounts — List
  • Discounts — Create
  • Discounts — Validate
  • Subscriptions — Manage

Loyalty & Gift Cards

  • Loyalty — Balance
  • Loyalty — Redeem
  • Loyalty — Referral
  • Gift Cards — List
  • Gift Cards — Redeem

Tickets & Support

  • Tickets — List
  • Tickets — Create
  • Tickets — Reply

Platform

  • Product Feed — JSON
  • Product Feed — CSV
  • Theme — Get
  • Approvals — Execute
  • Approvals — Reject
  • Geocode

SDKs

  • SDK Overview
  • TypeScript SDK
  • React Hooks

Guides

  • Chat Widget
  • Shopify Sync
  • Storefront Starter
  • Loyalty Program
  • Discounts & Promotions
  • Subscriptions
  • Klaviyo Integration
  • Custom Domains
  • Agentic Commerce (ACP)
  • A2A Protocol
  • AI Engines
  • MCP Server

Webhooks

  • Webhooks Overview
  • Events Reference
  • Shopify Webhooks
  • Stripe Webhooks
  • Reviews (Stamped / Trustpilot)
  • Logistics
  • Email Inbound

Resources

  • Environment Variables
  • Rate Limits
  • Changelog
DocsGuidesA2A Protocol

A2A Protocol

Agent-to-agent (A2A) protocol support in Reponse.

2 min read/Last updated Jul 9, 2026
On this page

Overview

Reponse implements the **Agent-to-Agent (A2A)** protocol so external AI agents can discover, communicate with, and delegate tasks to the Reponse commerce agent in a structured, machine-readable way. A2A enables multi-agent orchestration without scraping UIs or building custom adapters — agents exchange JSON-RPC messages over HTTPS.

Prerequisites

RequirementDescription
Reponse workspaceActive workspace with API key
A2A-compatible clientAny agent that speaks the A2A protocol
API key scopea2a:read, a2a:write

Key concepts

ConceptDescription
Agent CardA JSON document describing the agent's identity, capabilities, and endpoint
TaskA unit of work with lifecycle states (submitted → working → completed)
MessageA structured message exchanged between agents within a task
ArtifactA typed output produced by a task (e.g. a cart summary, product list)

Step 1 — Discover the agent card

Every Reponse workspace exposes an agent card at a well-known URL:

GET https://api.reponse.ai/v1/a2a/.well-known/agent.json
Authorization: Bearer rp_live_xxxxxxxxxxxx

**Response:**

json
{
  "name": "Reponse Commerce Agent",
  "description": "AI commerce agent for product discovery, cart management, and order support",
  "url": "https://api.reponse.ai/v1/a2a",
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "skills": [
    {
      "id": "product-search",
      "name": "Product Search",
      "description": "Search the product catalog with natural language"
    },
    {
      "id": "cart-management",
      "name": "Cart Management",
      "description": "Create, update, and check out shopping carts"
    },
    {
      "id": "order-lookup",
      "name": "Order Lookup",
      "description": "Look up order status and history by email"
    }
  ],
  "authentication": {
    "schemes": ["bearer"]
  }
}

Step 2 — Send a task

Tasks are submitted via JSON-RPC 2.0:

bash
curl -X POST https://api.reponse.ai/v1/a2a \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer rp_live_xxxxxxxxxxxx" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tasks/send",
    "id": "req-001",
    "params": {
      "id": "task-abc-123",
      "message": {
        "role": "user",
        "parts": [
          { "type": "text", "text": "Find me wireless headphones under $50" }
        ]
      }
    }
  }'

Step 3 — Receive the response

json
{
  "jsonrpc": "2.0",
  "id": "req-001",
  "result": {
    "id": "task-abc-123",
    "status": { "state": "completed" },
    "artifacts": [
      {
        "name": "product-results",
        "parts": [
          {
            "type": "text",
            "text": "Found 3 wireless headphones under $50..."
          },
          {
            "type": "data",
            "data": {
              "products": [
                { "id": "prod_1", "name": "BassX Pro", "price": 39.99 },
                { "id": "prod_2", "name": "SoundWave Lite", "price": 29.99 }
              ]
            }
          }
        ]
      }
    ]
  }
}

Task lifecycle

submitted → working → completed
                   ↘ failed
                   ↘ canceled
StateDescription
submittedTask received, queued for processing
workingAgent is actively processing the task
completedTask finished successfully with artifacts
failedTask encountered an error
canceledTask was canceled by the caller

JSON-RPC methods

MethodDescription
tasks/sendSubmit a new task or append a message to an existing task
tasks/getRetrieve a task by ID with its current status and artifacts
tasks/cancelCancel a running task

TypeScript example

typescript
const response = await fetch('https://api.reponse.ai/v1/a2a', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${process.env.REPONSE_API_KEY}`,
  },
  body: JSON.stringify({
    jsonrpc: '2.0',
    method: 'tasks/send',
    id: 'req-002',
    params: {
      id: crypto.randomUUID(),
      message: {
        role: 'user',
        parts: [{ type: 'text', text: 'What is the status of order #12345?' }],
      },
    },
  }),
});

const { result } = await response.json();
console.log(result.status.state);    // "completed"
console.log(result.artifacts);       // task outputs

Troubleshooting

SymptomCauseFix
404 on agent card URLA2A not enabled for workspaceContact support to enable A2A
UNAUTHORIZED on task sendMissing or invalid bearer tokenVerify API key and a2a:write scope
Task stays in workingComplex query taking longerPoll tasks/get or increase timeout
Empty artifactsNo matching products or dataRefine the query or check catalog data
JSON-RPC parse errorMalformed request bodyValidate JSON structure matches spec
PreviousAgentic Commerce (ACP)
NextAI Engines