Create an Arena Community for a Token
Create an Arena Community for a Token
This guide explains how a token creator gets an Arena community/social page linked to their token.
The important rule
For a new token, create the Arena community before sending the token-launch transaction. Arena returns a community UUID, and that UUID must be included at the end of the launch transaction calldata. After the transaction is confirmed, Arena’s indexer uses the UUID to connect the on-chain token to its community page.
Creating only the database record does not launch or link a token. Launching a token without the community UUID also does not create a visible Arena community page.
Recommended: use the Arena launch page
The normal self-service flow handles both parts automatically:
-
Sign in to Arena and connect the EVM wallet that will launch the token.
-
Open Create your Token.
-
Choose a launch type:
- Easy for a standard launch.
- Pro to configure a whitelist/presale.
-
Enter the token details:
- Image: upload the token image.
- Ticker: 1-10 letters or numbers. Arena converts it to uppercase.
- Token name: 1-22 letters, numbers, or spaces.
- Handle: 1-22 letters, numbers, or underscores. It must be unique.
-
Select the chain and pairing asset shown by Arena. For example, a Robinhood Chain GLD launch uses the GLD option.
-
Review the launch settings and optional initial purchase. Keep enough of the chain’s native asset in the wallet for gas; Robinhood Chain uses ETH for gas.
-
Confirm the launch transaction in the same wallet used to sign in.
-
Wait for the launch to be indexed. The page should open at:
https://arena.social/community/<TOKEN_CONTRACT_ADDRESS>
Indexing is normally quick, but the app allows up to about one minute before giving up its automatic check.
Existing token that was already launched
There is currently no public API that lets a creator attach an already-confirmed launch to a new community. The UUID association is read from the original launch transaction, so calling the community endpoint afterward is too late.
Do not create another temporary community or launch another token just to repair the page. Contact Arena support and provide:
- Arena profile handle and account wallet address
- chain name
- token contract address
- original launch transaction hash
- launch manager/launcher contract address
- token ID from the
TokenCreatedevent - pairing asset, such as ETH, ARENA, or GLD
- desired community handle, token name, ticker, and image
Arena staff must verify creator ownership and repair/backfill the association administratively. Never send a private key or seed phrase. Staff may ask the creator wallet to sign a harmless verification message.
API flow for approved integrations
This section is for launch partners that construct the on-chain launch transaction themselves. Normal users should use the Arena launch page above.
1. Authenticate
Production API base URL:
https://api.arena.social
The endpoints below require an Arena session JWT:
Authorization: Bearer <ARENA_SESSION_JWT>
Content-Type: application/json
The JWT belongs to the Arena account creating the community. Do not share or publish it.
2. Check the handle
curl --get 'https://api.arena.social/communities/check-name' \
--data-urlencode 'name=my_token' \
--header "Authorization: Bearer $ARENA_SESSION_JWT"
Expected result:
{
"isAvailable": true
}
3. Create the temporary community
Call POST /communities/create-community before the token launch:
curl 'https://api.arena.social/communities/create-community' \
--request POST \
--header "Authorization: Bearer $ARENA_SESSION_JWT" \
--header 'Content-Type: application/json' \
--data '{
"address": "0xCREATOR_WALLET",
"name": "my_token",
"photoURL": "https://example.com/my-token.png",
"ticker": "TOKEN",
"tokenName": "My Token",
"blockchain": "robinhood",
"paymentToken": "gld",
"holderRewardsEnabled": false
}'
Notes:
addressmust match the wallet on the authenticated Arena account.- The same address must send the launch transaction.
photoURLmust be a publicly reachable image URL.- Use lowercase API values:
avalancheorrobinhoodforblockchain;avax/arenaon Avalanche, or the currently enabled lowercase pair symbol on Robinhood Chain (for example,eth,arena, orgld). - Pair availability is controlled by Arena. A syntactically valid symbol can still be rejected if that pair is not enabled for new launches.
- Omitting
blockchainandpaymentTokenuses the legacy Avalanche/AVAX defaults. Set both explicitly in integrations.
The response contains the UUID needed for the on-chain transaction:
{
"community": {
"id": "01234567-89ab-4def-8123-456789abcdef",
"isTemporary": true
}
}
isTemporary: true is expected at this stage. It changes only after the matching launch is indexed.
For a Pro launch, use POST /communities/create-community-with-wl instead and include the whitelist configuration expected by the Arena launch UI.
4. Add the community UUID to the launch transaction
First ABI-encode the correct Arena manager or approved launch-router function. Then append the community UUID as exactly 36 UTF-8 bytes to the encoded calldata. Do not ABI-encode the UUID as a Solidity string or bytes argument.
Example using viem:
import { size, stringToHex } from "viem";
export function appendArenaCommunityId(
encodedLaunchCall: `0x${string}`,
communityId: string,
): `0x${string}` {
const encodedId = stringToHex(communityId);
if (size(encodedId) !== 36) {
throw new Error("Arena community ID must be a 36-byte UUID");
}
return `${encodedLaunchCall}${encodedId.slice(2)}` as `0x${string}`;
}
Send the resulting calldata in the original token-creation transaction. The integration must use the Arena-configured manager/router for the selected pair and must preserve the UUID suffix even when a launch helper or atomic-buy router is used.
5. Confirm that indexing completed
After the launch receipt succeeds, poll the token address with the authenticated Arena session:
curl --get 'https://api.arena.social/communities/get-community-profile-candidate' \
--data-urlencode 'param=0xTOKEN_CONTRACT_ADDRESS' \
--header "Authorization: Bearer $ARENA_SESSION_JWT"
Indexing is complete when the response contains the community with:
isTemporary: false- the correct
contractAddress - the correct
bcGroupId(on-chain token ID) - the original launch
transactionHash - the expected
launcherAddressandquoteTokenAddress
The community is then available at https://arena.social/community/<TOKEN_CONTRACT_ADDRESS>.
Common failures
| Error or symptom | Meaning | Fix |
|---|---|---|
Mismatch addresses |
The JSON address does not match the authenticated Arena account. |
Use the account’s creator wallet. |
Profile page handle taken |
The requested handle already exists. | Choose another handle and check it again. |
Payment token ... is not enabled for new launches |
The selected Robinhood pair is not launch-enabled in Arena’s current configuration. | Use an option currently displayed by Arena or ask Arena to enable the pair. |
| API returns a community, but no token page appears | Only the temporary record was created, or the launch calldata did not end with its UUID. | Do not relaunch blindly; give Arena support the community ID and transaction details. |
| Launch succeeds but the community remains temporary | The UUID, chain, configured manager, or transaction sender did not match the temporary community. | Verify all four values and escalate to Arena support. |
| Token appears in on-chain events but not Arena’s Launch tab | The indexer saw an unassociated/external launch or did not recognize the launcher configuration. | Provide the manager address, token ID, token address, and transaction hash to Arena support. |
Endpoint summary
| Purpose | Method and path | Authentication |
|---|---|---|
| Check handle availability | GET /communities/check-name?name=<HANDLE> |
Arena session JWT |
| Create standard temporary community | POST /communities/create-community |
Arena session JWT |
| Create temporary community with whitelist | POST /communities/create-community-with-wl |
Arena session JWT |
| Verify the indexed token page | GET /communities/get-community-profile-candidate?param=<TOKEN_ADDRESS> |
Arena session JWT |
The create-community-external endpoints are reserved for approved server-to-server integrations. They require a hash generated with an Arena-held authentication secret and are not a public workaround for an already-launched token.