Where can I find block ID when using Notion API?

I’m working with the Notion API and need to add child blocks to an existing block. The API documentation says I need a block ID to do this, but I can’t figure out where to get it from.

I’ve been looking through the official docs but haven’t found a clear explanation of how to retrieve block IDs. When I make API calls, I can see page IDs but the block IDs aren’t obvious to me.

Can someone explain the proper way to get block IDs? Are they returned in specific API responses, or do I need to make a particular type of request to fetch them? Any guidance would be really helpful since I’m stuck on this part of my integration.

You can get block IDs through the /blocks/{block_id}/children endpoint - it’ll return all child blocks with their unique IDs. Start by using a page ID as your block ID since pages are basically top-level blocks in Notion. Just make a GET request for that block’s children and you’ll get all the nested block IDs. I ran into this exact same thing when I started with the Notion API - figuring out the block hierarchy was key.

Block IDs are right there in the URL when you’re viewing any block in Notion’s web interface. Just right-click on a block and copy the link - that long string after the last dash is your block ID. For programmatic access, yeah the retrieve block children endpoint works great, but here’s another way: when you query a database or grab page content, each block object in the response has an “id” field. I’ve found this super helpful for nested content structures. The weird part is that Notion treats everything as blocks - even pages themselves. That’s why you can often use page IDs and block IDs interchangeably in certain situations.

honestly, browser devtools is your best bet. open notion in chrome, right-click and inspect any block, then watch the network tab while you mess around with blocks. you’ll see all the api calls notion makes and can grab the block ids from there. pretty hacky but it works when nothing else does.