Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Jeanxyz
Impactful Individual
Impactful Individual

can't get semantic model definition via API call

I'm learning semantic link and encounter an error with the code below:

'''''

import pandas as pd
import sempy.fabric as fabric
import base64
import json
import requests
import fnmatch

client = fabric.FabricRestClient()

#get the default workspace id of the notebook
workspaceId = fabric.get_workspace_id()
items = fabric.list_items(workspace=workspaceId)

itemId = items[items['Type']=="Report"].iloc[0].Id

response = client.post(f"/v1/workspaces/{workspaceId}/items/{itemId}/getDefinition")
print(f"first report in workspace is:'{itemId}'")
jsonParts= response.json()['definition']['parts']
pd.set_option('display.max_colwidth',100)
df_parts=pd.json_normalize(jsonParts)
df_parts

# check response from API call
print(f"Response Status Code: {response.status_code}")
print(f"Response Text: {response.text}")
''''
the printout returns status code: 202. Does anyone know the reason? I am admin of the Fabric workspace where I try to make an API call and the printout of itemId shows there are valid reports.
1 ACCEPTED SOLUTION

Hi @Jeanxyz,

Thank you for reaching out to the Microsoft Fabric Forum Community.

 

The 202 Accepted status means your request to retrieve the semantic model definition has been received and is being processed asynchronously. It is not an error, but a confirmation that the process is in progress.

Please consider the following steps:

  • After receiving a 202 Accepted response, the API usually provides a polling URL in the response body. This URL is used to monitor the status of your request, indicating whether it’s still processing, completed, or encountered an issue. Make sure to capture and use it for tracking progress.
  • You can regularly query the polling URL to check the status of your request, which could be InProgress, Succeeded, Failed, or Cancelled. If it shows InProgress, wait before querying again. Some responses might include a Retry-After header, indicating how long to wait.
  • Once the status changes to Succeeded, the response will provide a download URL. Use this URL to download the semantic model definition. If the downloadUrl is still null, keep polling until it becomes available.

If this post helps, then please give us ‘Kudos’ and consider Accept it as a solution to help the other members find it more quickly.

 

Thank you.

View solution in original post

11 REPLIES 11
v-saisrao-msft
Community Support
Community Support

Hi @Jeanxyz,


I wanted to check if you had the opportunity to review the information provided by @lbendlin. Please feel free to contact us if you have any further questions. If the response has addressed your query, please accept it as a solution and give a 'Kudos' so other members can easily find it.


Thank you.

lbendlin
Super User
Super User

202  is not an error. 202 Accepted - HTTP | MDN

 

You need to wait for your request to be processed.

Jeanxyz
Impactful Individual
Impactful Individual

How can I see the result when the request is accepted? I used sleep() method, but still don't get results. My code above is complete, it will work on any Fabric notebook. 

the 202 response shoud include a polling URL that you can use to probe the status of the request, and a download URL when the request is complete

 

Jeanxyz
Impactful Individual
Impactful Individual

Tried both url, it didn't provide any new information. Is it just me who encountered the API problem?

Hi @Jeanxyz,

 

We haven’t heard back from you regarding your issue. If it has been resolved, please mark the helpful response as the solution and give a ‘Kudos’ to assist others. If you still need support, let us know.

 

Thank you.

Hi @Jeanxyz,
I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions. If my response has addressed your query, please accept it as a solution and give a 'Kudos' so other members can easily find it.
Thank you.

Hi @Jeanxyz,

Thank you for reaching out to the Microsoft Fabric Forum Community.

 

The 202 Accepted status means your request to retrieve the semantic model definition has been received and is being processed asynchronously. It is not an error, but a confirmation that the process is in progress.

Please consider the following steps:

  • After receiving a 202 Accepted response, the API usually provides a polling URL in the response body. This URL is used to monitor the status of your request, indicating whether it’s still processing, completed, or encountered an issue. Make sure to capture and use it for tracking progress.
  • You can regularly query the polling URL to check the status of your request, which could be InProgress, Succeeded, Failed, or Cancelled. If it shows InProgress, wait before querying again. Some responses might include a Retry-After header, indicating how long to wait.
  • Once the status changes to Succeeded, the response will provide a download URL. Use this URL to download the semantic model definition. If the downloadUrl is still null, keep polling until it becomes available.

If this post helps, then please give us ‘Kudos’ and consider Accept it as a solution to help the other members find it more quickly.

 

Thank you.

Hi @v-saisrao-msft - I'm also facing similar issue. I got status_code 202 from this 

client.post(f"/v1/workspaces/{workspaceId}/items/{itemId}/getDefinition")

Then I extracted x-ms-operation-id and Retry-After from the response. Waited till the Retry-After & polled this

requests.get(f"https://api.fabric.microsoft.com/v1/operations/{operation_id}", headers=headers)

I got the below mentioned response

{'status': 'Succeeded', 'createdTimeUtc': '2025-07-23T09:49:32.9426438', 'lastUpdatedTimeUtc': '2025-07-23T09:49:34.2863596', 'percentComplete': 100, 'error': None}

I did not get the actual definition for semantic model. Please help.

 

Aren't you supposed to get a request id with your 202, and then you need to present that ID in the polling calls and the retrieval call?

Thats what I did. Afterwhich upon getting status as 'Succeeded'. I again have to get the result using 

requests.get(f"https://api.fabric.microsoft.com/v1/operations/{operation_id}/results", headers=headers)

Which I haven't done. Now I'm getting.

Ref: Long Running Operations - Get Operation Result - REST API (Core) | Microsoft Learn

Helpful resources

Announcements
Fabric July 2025 Monthly Update Carousel

Fabric Monthly Update - July 2025

Check out the July 2025 Fabric update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.