πŸ”’ Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901 aws-aif-c01
Guided AB-620 Domain 1
Domain 1 β€” Module 10 of 10 100%
10 of 28 overall

AB-620 Study Guide

Domain 1: Plan and Configure Agent Solutions

  • Getting Started: Copilot Studio for Developers Free
  • Planning Enterprise Integration and Reusable Components Free
  • Identity Strategy for Agents Free
  • Channels, Deployment and Audience Design Free
  • Responsible AI and Security Governance Free
  • Agent Flows: Build, Monitor and Handle Errors Free
  • Human-in-the-Loop Agent Flows Free
  • Topics, Tools and Variables Free
  • Advanced Responses: Custom Prompts and Generative Answers Free
  • API Calls, HTTP Requests and Adaptive Cards Free

Domain 2: Integrate and Extend Agents in Copilot Studio

  • Enterprise Knowledge Sources: The Big Picture
  • Copilot Connectors and Power Platform Connectors
  • Azure AI Search as a Knowledge Source
  • Adding Tools: Custom Connectors and REST APIs
  • MCP Tools: Model Context Protocol in Action
  • Computer Use: Agent-Driven UI Automation
  • Multi-Agent Solutions: Design and Agent Reuse
  • Integrating Foundry Agents
  • Fabric Data Agents: Analytics Meets AI
  • A2A Protocol: Cross-Platform Agent Collaboration
  • Grounded Answers: Azure AI Search with Foundry
  • Foundry Model Catalog and Application Insights

Domain 3: Test and Manage Agents

  • Test Sets & Evaluation Methods
  • Reviewing Results & Tuning Performance
  • Solutions & Environment Variables
  • Power Platform Pipelines for Agent ALM
  • Agent Lifecycle: From Dev to Production
  • Exam Prep: Diagnostic Review

AB-620 Study Guide

Domain 1: Plan and Configure Agent Solutions

  • Getting Started: Copilot Studio for Developers Free
  • Planning Enterprise Integration and Reusable Components Free
  • Identity Strategy for Agents Free
  • Channels, Deployment and Audience Design Free
  • Responsible AI and Security Governance Free
  • Agent Flows: Build, Monitor and Handle Errors Free
  • Human-in-the-Loop Agent Flows Free
  • Topics, Tools and Variables Free
  • Advanced Responses: Custom Prompts and Generative Answers Free
  • API Calls, HTTP Requests and Adaptive Cards Free

Domain 2: Integrate and Extend Agents in Copilot Studio

  • Enterprise Knowledge Sources: The Big Picture
  • Copilot Connectors and Power Platform Connectors
  • Azure AI Search as a Knowledge Source
  • Adding Tools: Custom Connectors and REST APIs
  • MCP Tools: Model Context Protocol in Action
  • Computer Use: Agent-Driven UI Automation
  • Multi-Agent Solutions: Design and Agent Reuse
  • Integrating Foundry Agents
  • Fabric Data Agents: Analytics Meets AI
  • A2A Protocol: Cross-Platform Agent Collaboration
  • Grounded Answers: Azure AI Search with Foundry
  • Foundry Model Catalog and Application Insights

Domain 3: Test and Manage Agents

  • Test Sets & Evaluation Methods
  • Reviewing Results & Tuning Performance
  • Solutions & Environment Variables
  • Power Platform Pipelines for Agent ALM
  • Agent Lifecycle: From Dev to Production
  • Exam Prep: Diagnostic Review
Domain 1: Plan and Configure Agent Solutions Free ⏱ ~14 min read

API Calls, HTTP Requests and Adaptive Cards

Connect your agent to external APIs with Send HTTP Request, parse JSON responses, and build rich Adaptive Cards for interactive user experiences.

Connecting Your Agent to the Outside World

β˜• Simple explanation

Think of your agent as a cashier at a fast-food counter. The cashier takes your order (the conversation), but to get the food they need to call back to the kitchen (an API). The kitchen sends back the meal on a tray (the JSON response). The cashier then arranges it nicely on your table β€” that is the Adaptive Card.

Without API calls, your agent can only talk. With API calls, it can fetch live data β€” weather, order status, account balances β€” from any system that speaks HTTP. And with Adaptive Cards, it can show that data as beautiful, interactive cards instead of plain text.

This module covers two critical capabilities for production agents:

  1. Send HTTP Request: A Power Automate action (available directly in Copilot Studio flows) that calls any REST API endpoint. Unlike custom connectors, it requires no OpenAPI spec β€” you configure the URL, method, headers, and body directly.
  2. Adaptive Cards: A JSON-based UI framework that renders rich, interactive cards across Microsoft channels (Teams, Outlook, Copilot). Cards can display data, collect input, and trigger actions β€” going far beyond plain text messages.

The exam tests whether you can configure HTTP requests correctly, parse JSON responses using ParseJSON(), and build Adaptive Cards that combine static layout with dynamic data from API calls.

Send HTTP Request vs Tool REST API

Two approaches exist for calling external APIs from an agent. The exam expects you to know when to use each.

Two approaches for calling external APIs
FeatureSend HTTP Request (Flow Action)Tool with REST API (Custom Connector)
What it isA built-in Power Automate action that makes raw HTTP callsA reusable connector built from an OpenAPI specification
Setup effortLow β€” configure URL, method, headers, body directly in the flowMedium β€” import or author an OpenAPI spec, configure auth, publish
Auth optionsManual β€” set auth headers yourself (API key, bearer token, basic auth)Managed β€” OAuth2, API key, or certificate handled by the platform
ReusabilitySingle flow only β€” each flow configures its own requestShared across flows and agents β€” once published, any flow can use it
Response handlingReturns raw text β€” you must ParseJSON() to extract fieldsReturns typed objects β€” fields are available directly in the flow designer
Best forQuick integrations, prototyping, one-off calls, simple APIsProduction integrations called from multiple flows, complex APIs with many endpoints
Exam signalQuestion mentions quick setup, single API call, or no connector availableQuestion mentions reusable, multiple flows, or OpenAPI specification

Configuring a Send HTTP Request

The Send HTTP Request action has these configuration fields:

FieldPurposeExample
MethodHTTP verbGET, POST, PUT, DELETE
URIThe API endpoint URLhttps://api.weather.com/v1/forecast
HeadersRequest headers as key-value pairsContent-Type: application/json, Authorization: Bearer {token}
BodyRequest payload (for POST/PUT){"city": "Auckland", "units": "metric"}
AuthenticationAuth type if using managed authNone, Active Directory OAuth, Raw (manual headers)
CookieOptional cookiesRarely used in agent flows

The response is always returned as plain text, regardless of the content type. This is the most important thing to remember for the exam.

ParseJSON() β€” The Critical Step

The Send HTTP Request action returns the entire response body as a single text string. To extract individual fields, you must use the ParseJSON() expression in Power Automate.

// Example API response (returned as plain text by the HTTP action):
{
  "city": "Auckland",
  "temperature": 18,
  "condition": "Partly cloudy",
  "wind": { "speed": 22, "direction": "SW" },
  "forecast": [
    { "day": "Tomorrow", "high": 20, "low": 14 },
    { "day": "Wednesday", "high": 17, "low": 12 }
  ]
}

To use this data in subsequent flow actions, you parse it with a schema:

  1. Add a Parse JSON action after the HTTP action
  2. Set the Content to the HTTP response body
  3. Provide a Schema that describes the JSON structure (you can generate this from a sample response)
  4. Now individual fields like body/city, body/temperature, and body/wind/speed are available as typed outputs

Without ParseJSON(), you have a single text blob. With it, you have structured data you can map to flow outputs and topic variables.

πŸ’‘ Exam tip: The response is TEXT β€” you must ParseJSON()

This is tested frequently. The Send HTTP Request action returns the response as a text string, even when the API sends Content-Type: application/json. You cannot directly access body.temperature β€” you must parse the JSON first.

If an exam question shows a flow that calls an API and then tries to use a field from the response without a Parse JSON step, the answer is β€œthe flow fails because the response is not parsed.”

Adaptive Cards

Adaptive Cards are a JSON-based framework for rendering rich, interactive UI elements in chat. They work across Teams, Outlook, Copilot, and web chat.

Core elements:

ElementWhat it rendersUse case
TextBlockFormatted text (heading, body, caption)Titles, descriptions, status messages
ImageAn image from a URLProduct photos, weather icons, logos
ColumnSet / ColumnSide-by-side layoutTwo-column comparison, label-value pairs
FactSetKey-value listOrder details, account summary
ActionSetButtons the user can clickConfirm, cancel, view details, open URL
Input.TextText input fieldCollect feedback, search queries
Input.ChoiceSetDropdown or radio buttonsSelect a category, choose an option
ContainerGroups elements with optional styleSections with backgrounds or borders

In Copilot Studio, you send an Adaptive Card by placing the JSON in a Message node with the card attachment format, or by returning it from a flow and using the card display action in the topic.

Combining Generative Answers with Cards

A powerful pattern is to combine generative answers with Adaptive Cards:

  1. Generative answers handle the conversational response β€” explaining the data in natural language.
  2. Adaptive Card presents the structured data visually β€” a summary card, a comparison table, or an interactive form.

For example, when a user asks β€œWhat is the weather in Auckland?”, the agent could respond with a text message (β€œIt is 18 degrees and partly cloudy in Auckland, with moderate southwest winds”) followed by an Adaptive Card showing the full forecast with icons. The text satisfies accessibility and screen readers; the card provides visual richness.

🚚 Dev Calls the Weather API for Delivery Alerts

Dev wants his logistics agent to warn customers about weather-related delivery delays. Here is his implementation:

Step 1: Send HTTP Request β€” Dev’s agent flow calls a weather API using the delivery city from the shipment record:

Method: GET
URI: https://api.weather.com/v1/forecast?city={DeliveryCity}&units=metric
Headers: X-API-Key: {stored in environment variable}

Step 2: Parse the response β€” Dev adds a Parse JSON action with a schema matching the API response structure. Now he has typed access to temperature, condition, wind.speed, and forecast[].

Step 3: Build the Adaptive Card β€” Dev constructs an Adaptive Card in a Compose action using TextBlock for the forecast heading, ColumnSet for the icon and temperature, and a FactSet for the multi-day outlook β€” all with parsed API values injected dynamically.

Step 4: Return to the topic β€” The flow returns success = true, a text summary, and the Adaptive Card JSON. The topic shows both: natural language and the visual card.

The gotcha Dev hit: His first attempt tried to access body.condition directly from the HTTP response without ParseJSON(). The flow failed silently and returned an empty result. Adding the Parse JSON step fixed it immediately.

Key Terms

Question

What is the key difference between Send HTTP Request and a custom connector?

Click or press Enter to reveal answer

Answer

Send HTTP Request is a quick, one-off HTTP call configured directly in the flow β€” no OpenAPI spec needed, but returns raw text and is not reusable across flows. A custom connector is built from an OpenAPI spec, handles auth natively, returns typed objects, and is reusable across multiple flows and agents.

Click to flip back

Question

Why must you use ParseJSON() after a Send HTTP Request?

Click or press Enter to reveal answer

Answer

The Send HTTP Request action returns the entire response body as a single text string, even when the API sends JSON. Without ParseJSON(), you cannot access individual fields. The Parse JSON action takes the text, applies a schema, and outputs typed fields you can use in subsequent actions.

Click to flip back

Question

What are the core Adaptive Card element types?

Click or press Enter to reveal answer

Answer

TextBlock (formatted text), Image (from URL), ColumnSet/Column (side-by-side layout), FactSet (key-value pairs), ActionSet (buttons), Input.Text (text input), Input.ChoiceSet (dropdown/radio), and Container (grouped elements with styling). Cards use JSON format and render across Teams, Outlook, and web chat.

Click to flip back

Question

How do you combine generative answers with Adaptive Cards?

Click or press Enter to reveal answer

Answer

Use generative answers for the conversational explanation in natural language, and an Adaptive Card for the visual structured data. The text satisfies accessibility; the card provides richness. Example: text says 'It is 18 degrees in Auckland' while the card shows a full forecast with icons and a FactSet.

Click to flip back

Knowledge Check

Knowledge Check

Dev's flow calls a weather API using Send HTTP Request and then tries to use body.temperature in the next action. The flow fails. What is the problem?

Knowledge Check

Priya at AgentForge needs to call the same CRM API from five different agent flows. The API has a full OpenAPI spec and uses OAuth2. What should she use?

Knowledge Check

Which Adaptive Card element should Dev use to display a list of shipment details as label-value pairs (Tracking Number: ABC123, Status: In Transit, ETA: Tomorrow)?


🎬 Video coming soon

API Calls, HTTP Requests and Adaptive Cards

← Previous

Advanced Responses: Custom Prompts and Generative Answers

Next β†’

Enterprise Knowledge Sources: The Big Picture

Guided

I learn, I simplify, I share.

A Guide to Cloud YouTube Feedback

© 2026 Sutheesh. All rights reserved.

Guided is an independent study resource and is not affiliated with, endorsed by, or officially connected to Microsoft. Microsoft, Azure, and related trademarks are property of Microsoft Corporation. Always verify information against Microsoft Learn.