Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
43 changes: 38 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,45 @@ git merge upstream/main
git push origin main
```

## Adding Images
## Adding Images and Videos

* Location: `fern/images`
* Steps:
* Place image files in the `fern/images/` directory
* Reference images from the markdown using its path within the images dir (don't include `/fern/images` in the path). See [Fern's docs](https://buildwithfern.com/learn/docs/content/write-markdown#images) on how to add to do so.
**All documentation assets are hosted on Cloudinary** - do NOT commit images/videos to Git.

### How to Add Assets

> **Note for External Contributors**: Cloudinary access is only available to internal Alchemy team members. If you need to add images or videos to your contribution, please upload them to a temporary location (like GitHub Issues or PR comments) and ask the Alchemy team to upload them to Cloudinary for you.

1. **Upload to Cloudinary** *(Internal contributors only)*
* Sign-in to Cloudinary through Okta.
* Upload to the `docs/` folder
* Organize by section: `docs/api-reference/`, `docs/tutorials/`, `docs/guides/`, etc.

2. **Copy the Cloudinary URL**
* Click on your uploaded asset
* Copy the "Secure URL" (starts with `https://alchemyapi-res.cloudinary.com/`)

3. **Add to Your MDX File**
```markdown
![Descriptive alt text](https://alchemyapi-res.cloudinary.com/image/upload/v1234567890/docs/section/image.png)
```

### Best Practices

* ✅ Use descriptive filenames: `nft-api-dashboard.png`
* ✅ Optimize images before uploading (keep under 1 MB)
* ❌ Don't commit images to Git
* ❌ Don't use generic names like `image.png`
* ❌ Don't link to external CDNs (GitHub, Imgur, etc.)

### Video Embeds

```markdown
<embed
src="https://alchemyapi-res.cloudinary.com/raw/upload/v1234567890/docs/section/video.webm"
type="video/webm"
style={{ width: '100%' }}
/>
```

## Pull Request Guidelines

Expand Down
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,22 @@ You can find the appropriate commands for running each in `package.json`

The project uses [Husky](https://typicode.github.io/husky) and [lint-staged](https://github.com/lint-staged/lint-staged) to run linting checks before commits.

## Assets (Images & Videos)

**All documentation assets are hosted on Cloudinary** - do NOT commit images/videos to the Git repository.

### Adding Images

> **Note**: Cloudinary access is only available to internal Alchemy team members. External contributors should upload assets to a temporary location and request the Alchemy team to upload them to Cloudinary.

**For internal contributors:**

1. Sign-in to Cloudinary through Okta and upload in the `docs/` folder
2. Copy the Cloudinary URL
3. Use in MDX: `![Alt text](https://alchemyapi-res.cloudinary.com/image/upload/v1234567890/docs/section/image.png)`

See [CONTRIBUTING.md](CONTRIBUTING.md#adding-images-and-videos) for detailed guidelines.

## Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details on how to submit pull requests, report issues, and contribute to the documentation.
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed fern/api-reference/arbitrum/alchemy-sdk-js.png
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ Or follow the written steps below:

First, navigate to the "create app" button in the "Apps" tab.

![3584](693457a-Getting_Started.png "Getting Started.png")
![3584](https://alchemyapi-res.cloudinary.com/image/upload/v1764193040/docs/api-reference/polygon-pos/polygon-pos-api-quickstart/693457a-Getting_Started.png "Getting Started.png")

Fill in the details under "Create App" to get your new key. You can also see apps you previously made and those made by your team here. Make sure to select the Arbitrum chain.

Pull existing keys by clicking on "View Key" for any app.

![991](d6172a5-Create_App_Details.png "Create App Details.png")
![991](https://alchemyapi-res.cloudinary.com/image/upload/v1764193040/docs/api-reference/polygon-pos/polygon-pos-api-quickstart/d6172a5-Create_App_Details.png "Create App Details.png")

You can also pull existing API keys by hovering over "Apps" and selecting one. You can "View Key" here, as well as "Edit App" to whitelist specific domains, see several developer tools, and view analytics.

Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed fern/api-reference/arbitrum/favicon.ico
Binary file not shown.
Binary file removed fern/api-reference/astar/alchemy-sdk-js.png
Binary file not shown.
Binary file removed fern/api-reference/astar/favicon.ico
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed fern/api-reference/data/nft-api/alchemy-sdk-js.png
Binary file not shown.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file removed fern/api-reference/data/nft-api/favicon.ico
Binary file not shown.
Diff not rendered.
14 changes: 7 additions & 7 deletions fern/api-reference/data/nft-api/nft-api-faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -115,17 +115,17 @@ While NFT media is traditionally served from IPFS/third-party servers, developer

Where available, Alchemy will replace the default `gateway` field of the NFT `media` object with the Alchemy NFT-CDN URL.

![1714](104416d-Image_11-23-22_at_10.46_AM.jpeg "Image 11-23-22 at 10.46 AM.jpeg")
![1714](https://alchemyapi-res.cloudinary.com/image/upload/v1764192962/docs/api-reference/data/nft-api/104416d-Image_11-23-22_at_10.46_AM.jpg "Image 11-23-22 at 10.46 AM.jpeg")

Alchemy-hosted NFT Asset

![1522](f7fbaca-3rd-Party.png "3rd-Party.png")
![1522](https://alchemyapi-res.cloudinary.com/image/upload/v1764192963/docs/api-reference/data/nft-api/f7fbaca-3rd-Party.png "3rd-Party.png")

Third-party hosted NFT Asset

Here's an example of a BAYC NFT asset cached by Alchemy: [https://nft-cdn.alchemy.com/eth-mainnet/d9d674adddb2da8fcbcdb0230ca1da3d](https://nft-cdn.alchemy.com/eth-mainnet/d9d674adddb2da8fcbcdb0230ca1da3d)

![612](fca143d-Screenshot_2022-11-23_at_10.35.39_AM.png "Screenshot 2022-11-23 at 10.35.39 AM.png")
![612](https://alchemyapi-res.cloudinary.com/image/upload/v1764192963/docs/api-reference/data/nft-api/fca143d-Screenshot_2022-11-23_at_10.35.39_AM.png "Screenshot 2022-11-23 at 10.35.39 AM.png")

## Why did my request not return a cached media url?

Expand Down Expand Up @@ -155,7 +155,7 @@ Note that this resizes the thumbnail version.

Here's an example of a resized BAYC NFT asset cached by Alchemy: [https://res.cloudinary.com/alchemyapi/image/upload/w\_400,h\_400/thumbnail/eth-mainnet/d9d674adddb2da8fcbcdb0230ca1da3d](https://res.cloudinary.com/alchemyapi/image/upload/w_400,h_400/thumbnail/eth-mainnet/d9d674adddb2da8fcbcdb0230ca1da3d)

![378](cdb00a2-Screenshot_2022-11-23_at_10.42.14_AM.png "Screenshot 2022-11-23 at 10.42.14 AM.png")
![378](https://alchemyapi-res.cloudinary.com/image/upload/v1764193029/docs/api-reference/data/nft-api/cdb00a2-Screenshot_2022-11-23_at_10.42.14_AM.png "Screenshot 2022-11-23 at 10.42.14 AM.png")

## How can I get PNG Images instead of SVG when using Alchemy's APIs?

Expand Down Expand Up @@ -200,7 +200,7 @@ If we pass a token ID into the method that the contract does not recognize, we w

[See the specific error for the example above via Etherscan's contract interface.](https://etherscan.io/address/0x60e4d786628fea6478f785a6d7e704777c86a7c6#readContract)

![2714](1d6e0cc-lifestyle.png "lifestyle.png")
![2714](https://alchemyapi-res.cloudinary.com/image/upload/v1764193030/docs/api-reference/data/nft-api/1d6e0cc-lifestyle.png "lifestyle.png")

The contract throws an exception on etherscan

Expand All @@ -222,7 +222,7 @@ Once we know where an NFT's metadata is stored (by calling `tokenURI` or `uri` o

You can see the empty response in etherscan's contract interface here: [https://etherscan.io/address/0xbfde6246df72d3ca86419628cac46a9d2b60393c#readContract](https://etherscan.io/address/0xbfde6246df72d3ca86419628cac46a9d2b60393c#readContract)

![2710](78b27ea-tokenURI.png "tokenURI.png")
![2710](https://alchemyapi-res.cloudinary.com/image/upload/v1764193031/docs/api-reference/data/nft-api/78b27ea-tokenURI.png "tokenURI.png")

The contract returns a malformed URI on etherscan

Expand All @@ -242,7 +242,7 @@ In the "token does not exist" section we talked about how a contract can throw a

You can see the specific error for the example above in etherscan's contract interface here: [https://etherscan.io/address/0xffdf17652cca46eb98a214cb3e413c8661241e49#readContract](https://etherscan.io/address/0xffdf17652cca46eb98a214cb3e413c8661241e49#readContract)

![2712](b28a394-_tokenId.png "_tokenId.png")
![2712](https://alchemyapi-res.cloudinary.com/image/upload/v1764193032/docs/api-reference/data/nft-api/b28a394-_tokenId.png "_tokenId.png")

The contract throws an exception on etherscan

Expand Down
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file removed fern/api-reference/data/token-api/favicon.ico
Binary file not shown.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ After setting up the webhooks in your Alchemy dashboard (or programmatically) us
3. Connect your Ngrok account by running `ngrok authtoken YOUR_AUTH_TOKEN`.
4. Start your local forwarding tunnel: `ngrok http 80`.

![](49a5266-Screen_Shot_2022-03-01_at_1.33.31_PM.png "Screen Shot 2022-03-01 at 1.33.31 PM.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193608/docs/api-reference/data/webhooks/webhooks-quickstart/49a5266-Screen_Shot_2022-03-01_at_1.33.31_PM.png "Screen Shot 2022-03-01 at 1.33.31 PM.png")

Once you have a URL to test your webhook (in this case `https://461a-199-116-73-171.ngrok.io` pictured above), follow the steps below:

Expand Down
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Original file line number Diff line number Diff line change
Expand Up @@ -159,13 +159,13 @@ Below you can find descriptions for each field of the response.
1. In your [Alchemy Dashboard](https://dashboard.alchemyapi.io/notify) click the **Notify** tab.
2. Find Address Activity and click the **CREATE WEBHOOK** button on the right side of the window.

![](6df528a-create-webhook-button.png "create-webhook-button.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193034/docs/api-reference/data/webhooks/webhook-types/6df528a-create-webhook-button.png "create-webhook-button.png")

3. Select your **CHAIN** in the dropdown. Then choose your **NETWORK**.
4. Paste your unique webhook URL into the WEBHOOK URL field.
5. Enter your **ETHEREUM ADDRESSES**.

![](bac898f-address-activity-webhook.png "address-activity-webhook.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193035/docs/api-reference/data/webhooks/webhook-types/bac898f-address-activity-webhook.png "address-activity-webhook.png")

7. Test your webhook by clicking the **TEST WEBHOOK** button.
8. After the test is successful, click **CREATE WEBHOOK**. Your webhook appears in the list.
Expand Down
Diff not rendered.
Original file line number Diff line number Diff line change
Expand Up @@ -2405,7 +2405,7 @@ Below you can find descriptions for select response fields. Note that this is no
4. Add your unique webhook URL. This is the link to receive requests. The webhook payload might not always be compatible for 3rd party integrations. For simple visual testing, we recommend using hosted sites like [requestbin](https://requestbin.com/) or [webhook.site](https://webhook.site/) OR spinning up a dedicated server for webhook notifications for production applications.
5. Define a GraphQL query using the dashboard playground.

![](48bc39f-Screenshot_2023-03-08_at_6.24.48_AM.png "Screenshot 2023-03-08 at 6.24.48 AM.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193033/docs/api-reference/data/webhooks/webhook-types/48bc39f-Screenshot_2023-03-08_at_6.24.48_AM.png "Screenshot 2023-03-08 at 6.24.48 AM.png")

If you're new to GraphQL, this editor has autocomplete enabled and will magically suggest fields as you start typing. If you get lost, you can always search for available queries in the docs tab on the right!

Expand Down
Diff not rendered.
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,14 @@ Below you can find descriptions for each field of the response.
1. In your \[Alchemy Dashboard] ([https://dashboard.alchemyapi.io/notify](https://dashboard.alchemyapi.io/notify)) click the **Notify** tab.
2. Find NFT Activity and click the **CREATE WEBHOOK** button on the right side of the window.

![](f2c4699-create-webhook-button.png "create-webhook-button.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193036/docs/api-reference/data/webhooks/webhook-types/f2c4699-create-webhook-button.png "create-webhook-button.png")

3. Select your **CHAIN** in the dropdown. Then choose your **NETWORK**.
4. Paste your unique webhook URL into the **WEBHOOK URL** field.
5. Add your **NFT ADDRESSES**.
6. Enter your **TOKEN IDS**.

![](519fce1-nft-activity-webhook.png "nft-activity-webhook.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193037/docs/api-reference/data/webhooks/webhook-types/519fce1-nft-activity-webhook.png "nft-activity-webhook.png")

7. Test your webhook by clicking the **TEST WEBHOOK** button.
8. After the test is successful, click **CREATE WEBHOOK**. Your webhook appears in the list.
Expand Down
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ After setting up the webhooks in your Alchemy dashboard (or programmatically) us
* Install Ngrok using [the Ngrok guide](https://dashboard.ngrok.com/get-started/setup). On macOS run `brew install ngrok`.
* Connect your Ngrok account by running `ngrok authtoken YOUR_AUTH_TOKEN`.
* Start your local forwarding tunnel: `ngrok http 80`.
![](49a5266-Screen_Shot_2022-03-01_at_1.33.31_PM.png "Screen Shot 2022-03-01 at 1.33.31 PM.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193608/docs/api-reference/data/webhooks/webhooks-quickstart/49a5266-Screen_Shot_2022-03-01_at_1.33.31_PM.png "Screen Shot 2022-03-01 at 1.33.31 PM.png")

2. Once you have a URL to test your webhook (in this case `https://461a-199-116-73-171.ngrok.io` pictured above), paste your NGROK endpoint into the Webhook URL field and hit “Test Webhook”, and see the event appear here: http://localhost:4040/inspect/http

Expand Down
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ slug: reference/ethereum-developer-guide-to-the-merge

This document outlines what you need to know as an Ethereum developer about The Merge

![2330](121b2eb-Screen_Shot_2022-09-09_at_10.55.19_AM.png "Screen Shot 2022-09-09 at 10.55.19 AM.png")
![2330](https://alchemyapi-res.cloudinary.com/image/upload/v1764193038/docs/api-reference/ethereum/ethereum-api-faq/121b2eb-Screen_Shot_2022-09-09_at_10.55.19_AM.png "Screen Shot 2022-09-09 at 10.55.19 AM.png")

## What is The Merge?

Expand Down Expand Up @@ -74,7 +74,7 @@ To remember the differences between the block tags you can think of them in the

In Proof of Stake, after every "epoch" (32 "slots") the `safe` and `finalized` blocks are voted on by validators. The first block in every new epoch (known as a checkpoint) contains validator attestations for the first block in the previous epoch.

![1116](55d7bc4-block_and_epochs_.png "block and epochs .png")
![1116](https://alchemyapi-res.cloudinary.com/image/upload/v1764193039/docs/api-reference/ethereum/ethereum-api-faq/55d7bc4-block_and_epochs_.png "block and epochs .png")

Source: [https://consensys.net/blog/news/the-ethereum-2-0-beacon-chain-explained/](https://consensys.net/blog/news/the-ethereum-2-0-beacon-chain-explained/)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Make sure that node is at least **v14 or higher** by typing the following in you

In case you haven't already, [sign up for a free Alchemy account](https://dashboard.alchemy.com/signup).

![2880](06c375a-Screenshot_2022-11-04_at_10.36.40_PM.png "Screenshot 2022-11-04 at 10.36.40 PM.png")
![2880](https://alchemyapi-res.cloudinary.com/image/upload/v1764192918/docs/tutorials/transactions/understanding-transactions/06c375a-Screenshot_2022-11-04_at_10.36.40_PM.png "Screenshot 2022-11-04 at 10.36.40 PM.png")

Alchemy's account dashboard where developers can create a new app on the Ethereum blockchain.

Expand Down
Diff not rendered.
Binary file removed fern/api-reference/introduction/0fa2754-image.png
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file removed fern/api-reference/introduction/bok_icon.png
Diff not rendered.
Diff not rendered.
3 changes: 0 additions & 3 deletions fern/api-reference/introduction/right_arow.svg
Diff not rendered.
Binary file removed fern/api-reference/op-mainnet/alchemy-sdk-js.png
Diff not rendered.
Binary file removed fern/api-reference/op-mainnet/favicon.ico
Binary file not shown.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ Or follow the written steps below:

First, navigate to the "create app" button in the "Apps" tab.

![3584](693457a-Getting_Started.png "Getting Started.png")
![3584](https://alchemyapi-res.cloudinary.com/image/upload/v1764193040/docs/api-reference/polygon-pos/polygon-pos-api-quickstart/693457a-Getting_Started.png "Getting Started.png")

Fill in the details under "Create App" to get your new key. You can also see apps you previously made and those made by your team here. Make sure to select the Optimism chain.

Pull existing keys by clicking on "View Key" for any app.

![991](d6172a5-Create_App_Details.png "Create App Details.png")
![991](https://alchemyapi-res.cloudinary.com/image/upload/v1764193040/docs/api-reference/polygon-pos/polygon-pos-api-quickstart/d6172a5-Create_App_Details.png "Create App Details.png")

You can also pull existing API keys by hovering over "Apps" and selecting one. You can "View Key" here, as well as "Edit App" to whitelist specific domains, see several developer tools, and view analytics.

Expand Down
Binary file removed fern/api-reference/polygon-pos/alchemy-sdk-js.png
Diff not rendered.
Binary file removed fern/api-reference/polygon-pos/favicon.ico
Binary file not shown.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ Or follow the written steps below:

First, navigate to the "create app" button in the "Apps" tab.

![3584](693457a-Getting_Started.png "Getting Started.png")
![3584](https://alchemyapi-res.cloudinary.com/image/upload/v1764193040/docs/api-reference/polygon-pos/polygon-pos-api-quickstart/693457a-Getting_Started.png "Getting Started.png")

Fill in the details under "Create App" to get your new key. You can also see apps you previously made and those made by your team here. Make sure to select the Polygon chain.

Pull existing keys by clicking on "View Key" for any app.

![](d6172a5-Create_App_Details.png "Create App Details.png")
![](https://alchemyapi-res.cloudinary.com/image/upload/v1764193040/docs/api-reference/polygon-pos/polygon-pos-api-quickstart/d6172a5-Create_App_Details.png "Create App Details.png")

You can also pull existing API keys by hovering over "Apps" and selecting one. You can "View Key" here, as well as "Edit App" to whitelist specific domains, see several developer tools, and view analytics.

Expand Down
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
2 changes: 1 addition & 1 deletion fern/api-reference/trace-api/trace-api-quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ Common use cases for the Trace API come in all flavors. Below are popular ones:

Traces are structured in a tree format. The `traceAddress` field represents the position of the trace in the tree. Below is a diagram of the `traceAddress` set of tree results:

![768](a0d248e-Docs_-_User_flow_1.png "Docs - User flow (1).png")
![768](https://alchemyapi-res.cloudinary.com/image/upload/v1764192957/docs/api-reference/trace-api/a0d248e-Docs_-_User_flow_1.png "Docs - User flow (1).png")

## Helpful Resources

Expand Down
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,4 @@ The [Debug API](/reference/debug-api-endpoints) is a set of RPC methods develope
6. The representation of the callstack is different between Trace and Debug API, trace API includes a field called [traceAddress](/reference/what-are-evm-traces#how-to-read-traceaddress) which gives the exact location of the call trace, while the call stack is nested in the response in debug API.
7. The way error handling is done is different in Trace and Debug API, trace API uses [custom](https://github.com/ledgerwatch/erigon/blob/devel/cmd/rpcdaemon/commands/trace_adhoc.go#L390) error handling while debug API uses [predefined constants](https://github.com/ethereum/go-ethereum/blob/1fa91729f2a591df2baf2dc77e81711a6e61c028/core/vm/errors.go) to represent errors that can occur during EVM execution.

![6144](65b8e7b-eth-nodes-illustration.png "eth-nodes-illustration.png")
![6144](https://alchemyapi-res.cloudinary.com/image/upload/v1764192958/docs/api-reference/trace-api/trace-api-resources/65b8e7b-eth-nodes-illustration.png "eth-nodes-illustration.png")
Loading
Loading