Skip to main content
Provider endpoints allow you to configure external blockchain data sources that Amp uses for data extraction. Providers define connection details for RPC endpoints, Firehose streams, and other data sources.

List Providers

Retrieves complete information for all provider configurations.
This endpoint returns the complete provider configuration including all configuration details. Ensure that sensitive information such as API keys and connection strings are not stored in provider configuration files.

Response

providers
array
required
List of all provider configurations with complete details

Example Request

curl http://localhost:1610/providers

Example Response

{
  "providers": [
    {
      "name": "alchemy-mainnet",
      "kind": "evm-rpc",
      "network": "mainnet",
      "url": "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
    },
    {
      "name": "firehose-eth",
      "kind": "firehose",
      "endpoint": "mainnet.eth.streamingfast.io:443"
    }
  ]
}

Get Provider Details

Retrieves complete information for a specific provider configuration by its name.
This endpoint returns the complete provider configuration. Ensure sensitive information is properly filtered before storage.

Path Parameters

name
string
required
The unique name/identifier of the provider to retrieve

Response

name
string
required
The name/identifier of the provider
kind
string
required
The type of provider
...
object
Additional provider-specific configuration fields

Example Request

curl http://localhost:1610/providers/alchemy-mainnet

Example Response

{
  "name": "alchemy-mainnet",
  "kind": "evm-rpc",
  "network": "mainnet",
  "url": "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
}

Response Codes

  • 200 OK - Provider information retrieved successfully
  • 400 Bad Request - Invalid provider name format
  • 404 Not Found - Provider not found
  • 500 Internal Server Error - Conversion error

Create or Update Provider

Creates or updates a provider configuration. If the provider already exists, it will be overwritten.

Request Body

name
string
required
The unique identifier for the provider
kind
string
required
The type of provider (e.g., “evm-rpc”, “firehose”)
...
object
Additional provider-specific configuration fields as needed (e.g., network, url)

Example Request - EVM RPC Provider

curl -X POST http://localhost:1610/providers \
  -H "Content-Type: application/json" \
  -d '{
    "name": "alchemy-mainnet",
    "kind": "evm-rpc",
    "network": "mainnet",
    "url": "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
  }'

Example Request - Firehose Provider

curl -X POST http://localhost:1610/providers \
  -H "Content-Type: application/json" \
  -d '{
    "name": "firehose-eth",
    "kind": "firehose",
    "endpoint": "mainnet.eth.streamingfast.io:443",
    "token": "YOUR_TOKEN"
  }'

Response Codes

  • 201 Created - Provider created or updated successfully
  • 400 Bad Request - Invalid request body or provider configuration
  • 500 Internal Server Error - Store error
Providers are reusable across multiple dataset definitions. Create providers once and reference them by name in your dataset manifests.

Delete Provider

Deletes a specific provider configuration by its name. This operation is idempotent - deleting a non-existent provider returns success.

Path Parameters

name
string
required
The unique name/identifier of the provider to delete

Response Codes

  • 204 No Content - Provider successfully deleted (or did not exist)
  • 400 Bad Request - Invalid provider name format
  • 500 Internal Server Error - Store error

Example Request

curl -X DELETE http://localhost:1610/providers/alchemy-mainnet
Once deleted, the provider configuration cannot be recovered. Any datasets using this provider may fail until a new provider is configured.

Provider Types

EVM RPC Provider

Used for extracting data from EVM-compatible chains via JSON-RPC:
{
  "name": "alchemy-mainnet",
  "kind": "evm-rpc",
  "network": "mainnet",
  "url": "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
}
Required fields:
  • name - Unique provider identifier
  • kind - Must be “evm-rpc”
  • network - Network name (e.g., “mainnet”, “polygon”)
  • url - RPC endpoint URL

Firehose Provider

Used for extracting data from Firehose streams:
{
  "name": "firehose-eth",
  "kind": "firehose",
  "endpoint": "mainnet.eth.streamingfast.io:443",
  "token": "YOUR_TOKEN"
}
Required fields:
  • name - Unique provider identifier
  • kind - Must be “firehose”
  • endpoint - Firehose endpoint address
  • token - Authentication token (optional)

Security Considerations

API Keys and Secrets: Do not store sensitive credentials directly in provider configurations. Use environment variables or secret management systems instead.
Best practices:
  1. Use environment variables for sensitive values
  2. Restrict API access to the Admin API
  3. Rotate credentials regularly
  4. Monitor provider usage for anomalies

Common Use Cases

Multi-Network Setup

Create providers for different networks:
# Ethereum Mainnet
curl -X POST http://localhost:1610/providers \
  -H "Content-Type: application/json" \
  -d '{"name": "eth-mainnet", "kind": "evm-rpc", "network": "mainnet", "url": "..."}'

# Polygon
curl -X POST http://localhost:1610/providers \
  -H "Content-Type: application/json" \
  -d '{"name": "polygon", "kind": "evm-rpc", "network": "polygon", "url": "..."}'

Provider Failover

Create backup providers for redundancy:
# Primary provider
curl -X POST http://localhost:1610/providers \
  -H "Content-Type: application/json" \
  -d '{"name": "alchemy-primary", "kind": "evm-rpc", "network": "mainnet", "url": "..."}'

# Backup provider
curl -X POST http://localhost:1610/providers \
  -H "Content-Type: application/json" \
  -d '{"name": "infura-backup", "kind": "evm-rpc", "network": "mainnet", "url": "..."}'

Build docs developers (and LLMs) love