https://api.dev.bifrostgaming.com/v1/graphqlpartnerServerAction
v1Registers 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
| Field | Type | Required | Description |
|---|---|---|---|
partnerId | String! | Required | Your unique partner identifier. This was provided to you when your partner account was created. |
encryptedData | String! | Required | Your JSON payload encrypted with AES-256-GCM using your partner encryption key, then Base64 encoded. See the Encryption Guide for details. |
Encrypted Payload Fields
| Field | Type | Required | Description |
|---|---|---|---|
action | String | Required | Must be "CREATE". |
timestamp | Number | Required | Current time in Unix milliseconds. Must be within 5 minutes of server time. |
nonce | String | Required | A unique random string, at least 16 characters. Use a UUID or similar. |
ownerId | String | Required | The guild owner's email. Must match the metadata.ownerId used when creating the guild. |
serverGameType | String | Required | Game type identifier (e.g. "HLL"). |
serverName | String | Required | Display name for the server. |
serverIP | String | Required | Server IP address (e.g. "203.0.113.50"). |
serverQueryPort | Number | Required | Server query port (e.g. 27015). |
serverRCONPort | Number | Required | Server RCON port (e.g. 27020). |
serverRCONPassword | String | Required | Server RCON password. Stored encrypted. |
serverCountry | String | Optional | ISO 3166-1 alpha-2 country code (e.g. "US"). Defaults to "Unknown". |
serverTimezone | String | Optional | IANA timezone (e.g. "America/New_York"). Defaults to "UTC". |
serverPlatform | String | Optional | "PC" or "CONSOLE". Defaults to "PC". |
mode | String | Optional | "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
- Open Postman and click Import (top-left)
- Drag and drop the downloaded
.jsonfile, or click Upload Files and select it - Click Import to confirm
- The collection appears in your sidebar — expand it and select the request
- In the Body tab, update the placeholder values (
your-partner-id, etc.) with your actual credentials - 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
| Field | Type | Required | Description |
|---|---|---|---|
success | Boolean | Required | true if the server was created successfully. |
statusCode | Int | Required | HTTP-style status code. 201 = created, 400 = bad request, 401 = unauthorized, 404 = guild not found, 409 = duplicate server, 500 = error. |
message | String | Required | A human-readable description of the result. |
serverId | String | Optional | The unique ID of the created server. Store this — you will need it for Change Server Status and Delete Server actions. |