ReadMy.md

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:

  1. Sign in to Arena and connect the EVM wallet that will launch the token.

  2. Open Create your Token.

  3. Choose a launch type:

    • Easy for a standard launch.
    • Pro to configure a whitelist/presale.
  4. 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.
  5. Select the chain and pairing asset shown by Arena. For example, a Robinhood Chain GLD launch uses the GLD option.

  6. 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.

  7. Confirm the launch transaction in the same wallet used to sign in.

  8. 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 TokenCreated event
  • 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:

  • address must match the wallet on the authenticated Arena account.
  • The same address must send the launch transaction.
  • photoURL must be a publicly reachable image URL.
  • Use lowercase API values: avalanche or robinhood for blockchain; avax/arena on Avalanche, or the currently enabled lowercase pair symbol on Robinhood Chain (for example, eth, arena, or gld).
  • Pair availability is controlled by Arena. A syntactically valid symbol can still be rejected if that pair is not enabled for new launches.
  • Omitting blockchain and paymentToken uses 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 launcherAddress and quoteTokenAddress

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.

0 comments

Loading comments…