Bifrost Bifrost
POSThttps://api.dev.bifrostgaming.com/v1/graphql

partnerServerAction

v1

Registers a new game server under a partner guild. The server is identified by the guild owner's email (ownerId) and automatically linked to the partner's guild. A billing record is created and the server begins in ACTIVE status.

Operation Type

Mutation

Rate Limit: 30 requests per minute per partner

Rate limits are applied per partner. Bulk operations should be spaced out.

Important usage notes

  • You must create a guild first via Create Guild before you can create servers.
  • Duplicate servers (same IP + RCON port + game type) will be rejected with a 409 status code.
  • TEST mode servers are excluded from billing calculations. Use TEST mode to verify your integration before going live.
  • A billing record is automatically created with status ACTIVE (or ACTIVEFREE for TEST mode).
  • Store the returned serverId — you will need it for all future operations on this server.
  • Use Get Test Servers to verify your TEST mode servers were created correctly.

Input Fields

FieldTypeRequiredDescription
partnerIdString!RequiredYour unique partner identifier. This was provided to you when your partner account was created.
encryptedDataString!RequiredYour JSON payload encrypted with AES-256-GCM using your partner encryption key, then Base64 encoded. See the Encryption Guide for details.

Encrypted Payload Fields

FieldTypeRequiredDescription
actionStringRequiredMust be "CREATE".
timestampNumberRequiredCurrent time in Unix milliseconds. Must be within 5 minutes of server time.
nonceStringRequiredA unique random string, at least 16 characters. Use a UUID or similar.
ownerIdStringRequiredThe guild owner's email. Must match the metadata.ownerId used when creating the guild.
serverGameTypeStringRequiredGame type identifier (e.g. "HLL").
serverNameStringRequiredDisplay name for the server.
serverIPStringRequiredServer IP address (e.g. "203.0.113.50").
serverQueryPortNumberRequiredServer query port (e.g. 27015).
serverRCONPortNumberRequiredServer RCON port (e.g. 27020).
serverRCONPasswordStringRequiredServer RCON password. Stored encrypted.
serverCountryStringOptionalISO 3166-1 alpha-2 country code (e.g. "US"). Defaults to "Unknown".
serverTimezoneStringOptionalIANA timezone (e.g. "America/New_York"). Defaults to "UTC".
serverPlatformStringOptional"PC" or "CONSOLE". Defaults to "PC".
modeStringOptional"LIVE" or "TEST". LIVE servers are billed; TEST servers are excluded from billing. Defaults to "LIVE".

These fields make up the JSON payload that is encrypted with AES-256-GCM before being sent as encryptedData.

Code Examples

# Step 1: Encrypt your payload (see Encryption Guide)
# Step 2: Send the encrypted payload

curl -X POST https://api.dev.bifrostgaming.com/v1/graphql \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mutation PartnerServerAction($input: PartnerServerActionInput!) { partnerServerAction(input: $input) { success statusCode message serverId } }",
    "variables": {
      "input": {
        "partnerId": "your-partner-id",
        "encryptedData": "BASE64_ENCRYPTED_PAYLOAD_HERE"
      }
    }
  }'

Postman Collection

Download a ready-to-use Postman collection for this endpoint. Import it into Postman to start testing immediately.

How to import into Postman
  1. Open Postman and click Import (top-left)
  2. Drag and drop the downloaded .json file, or click Upload Files and select it
  3. Click Import to confirm
  4. The collection appears in your sidebar — expand it and select the request
  5. In the Body tab, update the placeholder values (your-partner-id, etc.) with your actual credentials
  6. Click Send

The collection uses Postman's GraphQL body type, which provides syntax highlighting and variable editing. Make sure your Postman version is 7.2+ for GraphQL support.

Success Response200

{
  "data": {
    "partnerServerAction": {
      "success": true,
      "statusCode": 201,
      "message": "Server 'My Community Server #1' created successfully with billing status ACTIVE (mode: LIVE)",
      "serverId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    }
  }
}

Error Responses

Response Fields

FieldTypeRequiredDescription
successBooleanRequiredtrue if the server was created successfully.
statusCodeIntRequiredHTTP-style status code. 201 = created, 400 = bad request, 401 = unauthorized, 404 = guild not found, 409 = duplicate server, 500 = error.
messageStringRequiredA human-readable description of the result.
serverIdStringOptionalThe unique ID of the created server. Store this — you will need it for Change Server Status and Delete Server actions.

In partnership with

Brilliant game servers for communities large and small.

Get yours today!

Shrapnelworks Logo

A Shrapnelworks product