openapi: 3.1.0
info:
title: Microsoft Copilot Studio Direct Line Conversations API
description: 'Direct Line API 3.0 endpoints used to connect a custom application to a Microsoft Copilot Studio (formerly Power Virtual Agents) agent. The flow: (1) GET the token endpoint exposed by the agent (Mobile app channel) to obtain a Direct Line token, (2) start a conversation against https://directline.botframework.com, (3) post Activity objects to the bot and (4) poll for activities returned by the bot.'
version: '3.0'
servers:
- url: https://directline.botframework.com
description: Direct Line 3.0 service used by Copilot Studio agents
security:
- bearer: []
tags:
- name: Conversations
paths:
/v3/directline/conversations:
post:
tags:
- Conversations
summary: Start a new conversation with the bot
operationId: startConversation
responses:
'201':
description: Conversation created
content:
application/json:
schema:
$ref: '#/components/schemas/Conversation'
/v3/directline/conversations/{conversationId}:
get:
tags:
- Conversations
summary: Reconnect to an existing conversation
operationId: getConversation
parameters:
- name: conversationId
in: path
required: true
schema:
type: string
- name: watermark
in: query
required: false
schema:
type: string
responses:
'200':
description: Conversation details
content:
application/json:
schema:
$ref: '#/components/schemas/Conversation'
/v3/directline/conversations/{conversationId}/activities:
get:
tags:
- Conversations
summary: Retrieve activities from the bot
description: Returns the ActivitySet of messages from both the user and the bot. Use the `watermark` query parameter to page through new activities.
operationId: getActivities
parameters:
- name: conversationId
in: path
required: true
schema:
type: string
- name: watermark
in: query
required: false
schema:
type: string
responses:
'200':
description: ActivitySet
content:
application/json:
schema:
$ref: '#/components/schemas/ActivitySet'
post:
tags:
- Conversations
summary: Send an activity to the bot
operationId: postActivity
parameters:
- name: conversationId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Activity'
responses:
'200':
description: Resource response with activity id
content:
application/json:
schema:
type: object
properties:
id:
type: string
components:
schemas:
Conversation:
type: object
properties:
conversationId:
type: string
token:
type: string
expires_in:
type: integer
streamUrl:
type: string
format: uri
referenceGrammarId:
type: string
Activity:
type: object
properties:
type:
type: string
example: message
from:
type: object
properties:
id:
type: string
name:
type: string
text:
type: string
textFormat:
type: string
example: plain
locale:
type: string
ActivitySet:
type: object
properties:
activities:
type: array
items:
$ref: '#/components/schemas/Activity'
watermark:
type: string
securitySchemes:
bearer:
type: http
scheme: bearer
bearerFormat: JWT
description: Direct Line authentication uses either a long-lived secret or a short-lived token. Supply the value in the Authorization header as `Bearer {secret-or-token}`.
x-generated-from: https://learn.microsoft.com/en-us/microsoft-copilot-studio/publication-connect-bot-to-custom-application
x-generated-by: claude-genwave10-08-2026-05-23