Skip to main content
Create a claim portal. The request body is a discriminated union on version: V1 portals use a single configuration blob, while V2 portals use structured config groups (theme, metadata, media, content, registration, staking, FAQs, etc.). See the Portal API for the v1/v2 distinction. Route: POST /api/external/v1/portals/create

Headers

HeaderRequiredDescription
Content-TypeYesMust be application/json
x-magna-api-tokenYesYour Magna API token

Body parameters (V1)

FieldTypeRequiredDescription
version"V1"YesPortal version
claimConfigobjectYesToken + contract + claim window
configurationobjectYesPortal configuration blob (colors, metadata, feature flags)
contentobjectNoPortal copy / content
imagesobjectNoPortal images
legalEntityNamestringNoLegal entity displayed in the portal
xHandlestringNoX (Twitter) handle
blogUrlstringNoBlog URL
discordInviteLinkstringNoDiscord invite link

Body parameters (V2)

FieldTypeRequiredDescription
version"V2"YesPortal version
claimConfigobjectYesToken + contract + claim window
themeConfigobjectNoColors, button styles, theme
metadataobjectNoTitle, description, OG image, favicon
mediaConfigobjectNoLogos, backgrounds, animations
contentobjectNoPortal copy / content
registrationConfigobjectNoRegistration / eligibility settings
stakingConfigobjectNoStaking configuration
enabledWalletsstring[]NoWallet adapters to enable
socialProvidersarrayNoSocial login providers
faqsarrayNoFAQ entries
helpLinksarrayNoHelp links
xHandle · blogUrl · discordInviteLink · paragraphHandle · posthogKey · tosMdUrlstringNoOptional metadata
The configuration (V1) and structured config groups (V2) carry many nested fields. Create a portal in the admin dashboard once and fetch it with Get Portal to see the exact shape your project uses, then mirror it here.

Request example (V2)

curl -X POST https://app.magna.so/api/external/v1/portals/create \
-H 'Content-Type: application/json' \
-H 'x-magna-api-token: YOUR_API_KEY' \
-d '{
  "version": "V2",
  "claimConfig": { "tokenId": "tok...uuid", "contractId": "c...uuid" },
  "metadata": { "title": "Acme Claim", "companyName": "Acme Inc." }
}'

Response example

{
  "id": "po...uuid",
  "name": "Acme Claim Portal",
  "domains": ["acme.demo-portal.magna.so"],
  "version": "V2",
  "createdAt": "2024-04-15T21:26:21.000Z"
}