# Stop Scrolling Docs. Start Building. Meet - Copy-n-Paste PAPI

**URL:** <https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850>\
**Category:** Tech Talk\
**Created:** [September 11, 2025, 2:48am UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850 "2025-09-11T02:48:06Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![illegalcall](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/illegalcall/32/9206_2.png) [@illegalcall](https://forum.polkadot.network/u/illegalcall)\
**Post date:** [September 11, 2025, 2:48am UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/1 "2025-09-11T02:48:06Z")

</div>

Hi folks! 👋

I just put together Copy-n-Paste PAPI — a PAPI Explorer webapp that helps you get hands-on with the Polkadot-API without the tab-hopping. If digging through papi.how or dev.papi.how feels like a maze when you just want to see things work, this gives you a single place to explore and learn by doing.

What’s inside:

- Browse everything in one go: chain modules, storage, constants, runtime calls, events, and extrinsics.

- Test transactions without the risk: simulate first, inspect payloads/signatures, and see decoded events before you broadcast.

- Grab ready-to-paste TypeScript: copy snippets straight into your project.

- Quick chain/account switcher: hop between relay/system chains and accounts fast.

- Built for onboarding: go from reading to simulating to sending with as few clicks as possible.

Try the webapp:  
[https://papi-copy-n-paste-web.vercel.app/](https://papi-copy-n-paste-web.vercel.app/)

After a demo, I got encouraging feedback from Shawn Tabrizi (Parity), Jakub (Hydration) and PAPI team to post this here. I’m fairly new to Polkadot myself, coming from other blockchain ecosystems, and I think this can help other ecosystem developers.

Quick starter (optional):  
I also published create-papi-app to scaffold a PAPI project with templates (minimal, vite-react, next-app, node-cli).  
Run:  
`npx create-papi-app`  
Package: [https://www.npmjs.com/package/create-papi-app](https://www.npmjs.com/package/create-papi-app)

Feedback welcome:

- Webapp UX: what should be one-click? what’s confusing?

- Missing examples: storage/transactions/events you’d like prefilled?

- Starter gaps: env setup, wallet integrations, SSR patterns, tests?

I’m actively looking for feedback and collaborators. If you try it, please share bugs, rough edges, or ideas — happy to pair up or review PRs.

PS: I am currently in PBA Bali (Dapps track), if someone wants to chat about this, please find me. I would be glad.

Thanks for reading! 🙏

---

<div class="post-metadata">

**Author:** ![iamyxsh](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/iamyxsh/32/9504_2.png) [@iamyxsh](https://forum.polkadot.network/u/iamyxsh)\
**Post date:** [September 11, 2025, 3:38am UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/2 "2025-09-11T03:38:01Z")

</div>

This tool helped me navigate Papi calls for my personal project. \<3

---

<div class="post-metadata">

**Author:** ![andrzejSulkowski](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/andrzejsulkowski/32/8932_2.png) [@andrzejSulkowski](https://forum.polkadot.network/u/andrzejSulkowski)\
**Post date:** [September 12, 2025, 5:22am UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/3 "2025-09-12T05:22:00Z")

</div>

I can not give you PAPI related feedback as I’ve never worked with it… yet 😉  
But maybe thats actually good. Here is how I interacted with it:

I open up papi-copy-n-paste and immediately my attention goes to the dropdown’s on the left. I click wildly around on them to collapse and hide.  
Now inside “Balances \> Storage \> Locks” the “Run Query” button is disabled and I am wondering why. I was hoping when I would fill the SS58String I could do the call - but the state didn’t change. Some kind of feedback about why something doesnt work would be helpful here.

Furthermore a few times when the Button was available, I received the error: “⚠ Storage key not known for Auctions.AuctionCounter”. If I added the call to the Queue and executed the queue it presented the Queue run to be successful despite the missing key error in the “Auctions.AuctionCounter”.

When I have something inside the queue all the other calls become available as well. However, when I run them only the queue is being executed, not the selected call. Idk if this is intended but it feels buggy.

“VoterList \> Calls \> rebag” - when I select Alice the button becomes disabled.

I can not give you PAPI related feedback as I’ve never worked with it… yet 😉  
But maybe thats actually good. Here is how I interacted with it:

I open up papi-copy-n-paste and immediately my attention goes to the dropdown’s on the left. I click wildly around on them to collapse and hide.  
Now inside “Balances \> Storage \> Locks” the “Run Query” button is disabled and I am wondering why. I was hoping when I would fill the SS58String I could do the call - but the state didn’t change. Some kind of feedback about why something doesnt work would be helpful here.

Furthermore a few times when the Button was available, I received the error: “⚠ Storage key not known for Auctions.AuctionCounter”. If I added the call to the Queue and executed the queue it presented the Queue run to be successful despite the missing key error in the “Auctions.AuctionCounter”.

When I have something inside the queue all the other calls become available as well. However, when I run them only the queue is being executed, not the selected call. Idk if this is intended but it feels buggy.

“VoterList \> Calls \> rebag” - when I select Alice the button becomes disabled.

I’ll ask a colleague with more dApp and PAPI experience to take a look and share additional feedback.

Cheers 🎊

---

<div class="post-metadata">

**Author:** ![illegalcall](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/illegalcall/32/9206_2.png) [@illegalcall](https://forum.polkadot.network/u/illegalcall)\
**Post date:** [September 18, 2025, 1:17pm UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/4 "2025-09-18T13:17:26Z")

</div>

Yup, fixed now, also added many more features.  
Now we have constants, events, errors

Do give it a try folks

 ![image](https://europe1.discourse-cdn.com/flex005/uploads/polkadot2/original/2X/a/af6214653f8b2efc9df727f63961a76c0f9845c1.jpeg)

---

<div class="post-metadata">

**Author:** ![bader](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/bader/32/2291_2.png) [@bader](https://forum.polkadot.network/u/bader)\
**Post date:** [September 18, 2025, 6:10pm UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/5 "2025-09-18T18:10:16Z")

</div>

Really cool tool! Might add it to [hackathon-guide/polkadot-tinkerers.md at 56f28753f063f148909bab34e110b524fd5b3989 · polkadot-developers/hackathon-guide · GitHub](https://github.com/polkadot-developers/hackathon-guide/blob/56f28753f063f148909bab34e110b524fd5b3989/polkadot-tinkerers.md), if you don’t mind 😉

---

<div class="post-metadata">

**Author:** ![illegalcall](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/illegalcall/32/9206_2.png) [@illegalcall](https://forum.polkadot.network/u/illegalcall)\
**Post date:** [September 18, 2025, 6:32pm UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/7 "2025-09-18T18:32:33Z")

</div>

@bader Sure sure.

---

<div class="post-metadata">

**Author:** ![rakshit087](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/rakshit087/32/9616_2.png) [@rakshit087](https://forum.polkadot.network/u/rakshit087)\
**Post date:** [September 19, 2025, 7:51am UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/8 "2025-09-19T07:51:45Z")

</div>

This is super helpful, I was lost in PAPI, this has made it so much easier for beginners to use it.  
Thanks.

---

<div class="post-metadata">

**Author:** ![illegalcall](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/illegalcall/32/9206_2.png) [@illegalcall](https://forum.polkadot.network/u/illegalcall)\
**Post date:** [September 19, 2025, 5:28pm UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/9 "2025-09-19T17:28:41Z")

</div>

Hey folks, would it be helpful if we can connect a real wallet here and make actual queries and transactions, since we have the setup already here?

---

<div class="post-metadata">

**Author:** ![josep](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/josep/32/2619_2.png) [@josep](https://forum.polkadot.network/u/josep)\
**Post date:** [September 22, 2025, 7:52am UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/10 "2025-09-22T07:52:32Z")

</div>

> [@illegalcall](#):
>
> Hey folks, would it be helpful if we can connect a real wallet here and make actual queries and transactions, since we have the setup already here?

If you go down this path, then it’s probably a great idea to use [DOTConnect](https://dotconnect.dev/) by @tien . It’s pretty awesome!

---

<div class="post-metadata">

**Author:** ![illegalcall](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/illegalcall/32/9206_2.png) [@illegalcall](https://forum.polkadot.network/u/illegalcall)\
**Post date:** [September 22, 2025, 8:14am UTC](https://forum.polkadot.network/t/stop-scrolling-docs-start-building-meet-copy-n-paste-papi/14850/11 "2025-09-22T08:14:29Z")

</div>

Thank you so much Josep, looks really good.
