Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Microsoft 365 Copilot APIs Beta Python Client Library

Integrate the Microsoft 365 Copilot APIs into your Python application!

Note:

Because the Copilot APIs in the beta endpoint are subject to breaking changes, don't use this preview release of the client libraries in production apps.

Installation

To install the client libraries via PyPi:

pip install microsoft-agents-m365copilot-beta

Create a Copilot APIs client and make an API call

The following code example shows how to create an instance of a Microsoft 365 Copilot APIs client with an authentication provider in the supported languages. The authentication provider handles acquiring access tokens for the application. Many different authentication providers are available for each language and platform. The different authentication providers support different client scenarios. For details about which provider and options are appropriate for your scenario, see Choose an Authentication Provider.

The example also shows how to make a call to the Microsoft 365 Copilot Retrieval API. To call this API, you first need to create a request object and then run the POST method on the request.

The client ID is the app registration ID that is generated when you register your app in the Azure portal.

  1. Create a .env file with the following values:

    TENANT_ID = "YOUR_TENANT_ID"
    CLIENT_ID = "YOUR_CLIENT_ID"
    

    Note:

    Your tenant must have a Microsoft 365 Copilot license.

  2. Create a main.py file with the following snippet:

    import asyncio
    import os
    from datetime import datetime
    
    from azure.identity import DeviceCodeCredential
    from dotenv import load_dotenv
    from kiota_abstractions.api_error import APIError
    
    from microsoft_agents_m365copilot_beta import AgentsM365CopilotBetaServiceClient
    from microsoft_agents_m365copilot_beta.generated.copilot.retrieval.retrieval_post_request_body import (
        RetrievalPostRequestBody,
    )
    from microsoft_agents_m365copilot_beta.generated.models.retrieval_data_source import RetrievalDataSource
    
    load_dotenv()
    
    TENANT_ID = os.getenv("TENANT_ID")
    CLIENT_ID = os.getenv("CLIENT_ID")
    
    # Define a proper callback function that accepts all three parameters
    def auth_callback(verification_uri: str, user_code: str, expires_on: datetime):
        print(f"\nTo sign in, use a web browser to open the page {verification_uri}")
        print(f"Enter the code {user_code} to authenticate.")
        print(f"The code will expire at {expires_on}")
    
    # Create device code credential with correct callback
    credentials = DeviceCodeCredential(
        client_id=CLIENT_ID,
        tenant_id=TENANT_ID,
        prompt_callback=auth_callback
    )
    
    # Use the Graph API beta endpoint explicitly
    scopes = ['https://graph.microsoft.com/.default']
    client = AgentsM365CopilotBetaServiceClient(credentials=credentials, scopes=scopes)
    
    # Make sure the base URL is set to beta
    client.request_adapter.base_url = "https://graph.microsoft.com/beta"
    
    async def retrieve():
        try:
            # Print the URL being used
            print(f"Using API base URL: {client.request_adapter.base_url}\n")
            
            # Create the retrieval request body
            retrieval_body = RetrievalPostRequestBody()
            retrieval_body.data_source = RetrievalDataSource.SharePoint
            retrieval_body.query_string = "What is the latest in my organization?"
            
            # Try more parameters that might be required
            # retrieval_body.maximum_number_of_results = 10
            
            # Make the API call
            print("Making retrieval API request...")
            retrieval = await client.copilot.retrieval.post(retrieval_body)
            
            # Process the results
            if retrieval and hasattr(retrieval, "retrieval_hits"):
                print(f"Received {len(retrieval.retrieval_hits)} hits")
                for r in retrieval.retrieval_hits:
                    print(f"Web URL: {r.web_url}\n")
                    for extract in r.extracts:
                        print(f"Text:\n{extract.text}\n")
            else:
                print(f"Retrieval response structure: {dir(retrieval)}")
        except APIError as e:
            print(f"Error: {e.error.code}: {e.error.message}")
            if hasattr(e, 'error') and hasattr(e.error, 'inner_error'):
                print(f"Inner error details: {e.error.inner_error}")
            raise e
    
    
    # Run the async function
    asyncio.run(retrieve())
    
  3. If successful, you should get a list of retrievalHits collection.

Issues

To view or log issues, see issues.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Metadata

Release files for microsoft-agents-m365copilot-beta 1.0.0rc21

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for microsoft-agents-m365copilot-beta 1.0.0rc21
File Size Uploaded
microsoft_agents_m365copilot_beta-1.0.0rc21.tar.gz 86.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for microsoft-agents-m365copilot-beta 1.0.0rc21
File Interpreter ABI Platform
microsoft_agents_m365copilot_beta-1.0.0rc21-py3-none-any.whl Python 3 none any Details

Total release size: 403.7 kB

Release files / microsoft_agents_m365copilot_beta-1.0.0rc21.tar.gz

Download URL microsoft_agents_m365copilot_beta-1.0.0rc21.tar.gz
Size 86.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ed17eb233ca9daeb39a37c2f3d5d66e904e0883a7521f7732422245b7fef1517
BLAKE2b-256 checksum
How to use checksums
b968eb6c2b81fc498550b4ca0c9f322188c8de2b2987007e865fbe9b11bc9a3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via RestSharp/106.13.0.0

Release files / microsoft_agents_m365copilot_beta-1.0.0rc21-py3-none-any.whl

Download URL microsoft_agents_m365copilot_beta-1.0.0rc21-py3-none-any.whl
Size 317.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2a600b754c366c2b496fd4402b3148a531906181ec14e1736277638b566dd26c
BLAKE2b-256 checksum
How to use checksums
65b7af5c91535ec3c4afbd209f8cf35048a351bd9a81c6b5a89e7d5c8380498a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via RestSharp/106.13.0.0
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page