Hosted services
Connect ABX to a compatible hosted resolver.
A resolver indexes ABX events and serves metadata. Run your own or use a compatible provider.
First-party service
abx auth login
abx remote abx
abx add 0xYourContract --remote abxabx auth login opens a browser flow and saves ABX_SERVICES_API_KEY to an ignored .env. It does
not print the key. The same sign-in provisions or reuses the creator wallet; an active browser
session can avoid another email code. A later CLI login reuses the loaded key. Creating a key
requires agreement to the Art Blocks User Terms. Existing
keys continue to work; acceptance is checked only when a new key is created.
An account may have five active keys. The service cannot recover a lost key value.
abx auth keys
abx auth revoke-key <key-id>
abx auth logoutThe built-in abx remote points to https://services.abx.io. Other providers can implement the
same interfaces.
Creator RPC
When ABX_SERVICES_API_KEY is available and you have not configured ABX_RPC_URLS_<CHAIN> or
ABX_RPC_URLS, the CLI treats the built-in abx remote as its default creator-RPC provider. It
fetches that remote's public descriptor and uses the endpoint only when it advertises
abx-creator-rpc/v1, bearer authentication, a route template, and the active chain. The existing
public endpoints remain failovers, and your API key is sent only in the authorization header to the
exact advertised URL.
This is a provider interface, not an ABX Services-only URL convention. Set ABX_RPC_REMOTE to any
named remote or catalog URL to select another compatible provider; named remotes use their matching
ABX_REMOTE_<NAME>_TOKEN, while an ad-hoc catalog URL follows the existing
ABX_REMOTE_SELF_TOKEN convention. If its descriptor is unavailable, invalid, or does not
advertise the active chain, ABX does not guess a route and continues with the public fallbacks. Run
abx remote <name-or-url> to inspect the live advertisement. Rate limits and availability are
service policy, not protocol guarantees.
The creator RPC is private CLI infrastructure for tasks such as deploying and checking project
state. Do not publish its endpoint or API key, put either in browser code, or use it for a project
website. Public applications should use their own Alchemy, QuickNode, Infura, or equivalent
provider account. Excessive traffic or public-site use may result in suspension of the API key or
account. To use your own RPC in the CLI, set ABX_RPC_URLS_<CHAIN> or ABX_RPC_URLS; explicit
configuration always wins.
To report illegal, infringing, or otherwise prohibited content served by ABX Services, email
legal@artblocks.io with the chain, contract address, exact service URL,
and supporting information. Art Blocks can stop its services from indexing, rendering, or serving a
project; it cannot remove blockchain data or copies held elsewhere.
Another provider
Add a named remote to .env:
ABX_REMOTE_MYPROVIDER_URL=https://meta.provider.example
ABX_REMOTE_MYPROVIDER_TOKEN=YOUR_API_KEYThen pass the name to any remote command:
abx remote myprovider
abx add 0xYourContract --remote myprovider
abx status 0xYourContract --remote myprovider --watchA named remote uses only its matching token. It never falls back to another credential.
What a compatible service exposes
GET /.well-known/abx-service returns the provider's chains, interfaces, authentication, rendering,
and contract generations. Its endpoints map may place interfaces on different HTTPS origins.
Inspect the descriptor before using a provider:
abx remote <name-or-url>The first-party catalog, accounts, and project control live at services.abx.io. Public token data
lives at resolver.abx.io. The CLI follows the descriptor instead of inferring behavior from a
hostname.
A compatible creator-RPC provider advertises the interface and its route rather than relying on a well-known hostname or path:
{
"interfaces": ["abx-creator-rpc/v1"],
"chains": [8453, 84532],
"endpoints": {
"abx-creator-rpc/v1": {
"baseUrl": "https://rpc.provider.example",
"chains": [8453, 84532],
"auth": "bearer",
"pathTemplate": "/v1/rpc/{chainId}"
}
}
}The resolved route accepts JSON-RPC over POST with the remote's bearer token. The chain list must
be a subset of the catalog's chains, and a bearer-authenticated origin must use HTTPS (except
loopback HTTP during local development). A fixed path is valid for a single-chain endpoint; a
multi-chain endpoint normally uses the percent-encoded {chainId} substitution. Clients must not
infer a route for an unadvertised interface or chain.
The version 1 control plane uses bearer authentication:
| Method and path | Purpose |
|---|---|
POST /v1/projects | Register a project. |
GET /v1/projects | List visible projects and status. |
DELETE /v1/projects/{chainId}/{address} | Remove a registration. |
POST /v1/projects/{chainId}/{address}/reindex | Request a fresh index. |
GET /v1/projects/{chainId}/{address}/status | Read progress and freshness. |
Registration may return 202 while indexing continues. abx add waits by default. Use --no-wait
when another process will watch status. Use --json for structured output.
The status words are queued, backfilling, live, stale, and failed. A stale service keeps
serving its last indexed state.
After the service verifies the factory and core version, project responses include
contractGeneration. A missing value means provenance is not established.
Public reads
Do not guess metadata routes. Read the URI stored by the contract:
abx tokenuri 0xYourContract --token 0
abx contracturi 0xYourContract --jsonThe public API returns distinct status codes for bad routes, unsupported chains, unregistered projects, unminted tokens, and burned ERC-721 tokens.
Leave cleanly
The chain remains the source of truth. Move to another provider or your own resolver with:
abx migrate 0xYourContract --from <source> --to <destination>The command copies offchain values, checks hashes, and compares both resolvers. It does not update DNS or the onchain base URI.