Skip to content
LogoLogo

API Reference

Base URL: https://mpp-createos.nodeops.network

POST /agent/deploy

Deploy a project to CreateOS. Returns 402 if payment is required, 200 if deploying.

Auth required: Yes

Request Headers

HeaderRequiredDefaultDescription
X-Payment-TxNo-ERC20 transfer transaction hash
X-Payment-ChainNoarbitrumChain the payment was made on
X-Payment-TokenNousdcToken used for payment
X-Use-Existing-CreditsNofalseOpt in to share credits with active projects

Request Body

{
  "uniqueName": "my-app",
  "displayName": "My App",
  "description": "Optional description",
  "months": 1,
  "settings": {
    "port": 3000,
    "runtime": "build-ai",
    "useBuildAI": true,
    "buildCommand": null,
    "runCommand": null,
    "installCommand": null,
    "framework": null,
    "hasDockerfile": false
  },
  "upload": {
    "type": "files",
    "files": [{ "path": "index.js", "content": "base64" }]
  }
}
FieldTypeRequiredDefaultDescription
uniqueNamestringYes-URL-safe project identifier
displayNamestringYes-Human-readable project name
descriptionstringNo-Project description
monthsnumberNo1Number of months to deploy for
settingsobjectNoSee belowBuild and runtime settings
uploadobjectYes-Files or zip to deploy

Responses

200 - Deploying (credits available or payment verified):

{
  "projectId": "uuid",
  "deploymentId": "uuid",
  "status": "deploying",
  "message": "Deployment started. Poll status for updates."
}

402 - Payment required:

{
  "error": "Payment required",
  "amount_usd": 0.5,
  "amount_token": "500000",
  "current_credit_balance_usd": 0,
  "active_projects": 0,
  "pay_to": "0x7EA5...",
  "payment_chain": "arbitrum",
  "token": "usdc",
  "decimals": 6,
  "supported_chains": [
    { "chain": "arbitrum", "chain_id": 42161, "tokens": ["usdc", "usdt"] },
    { "chain": "base", "chain_id": 8453, "tokens": ["usdc", "usdt"] }
  ]
}

GET /agent/deploy/:projectId/:deploymentId/status

Check deployment status. Only the deployer wallet can access.

Auth required: Yes

Responses

{
  "status": "deploying",
  "deployment_id": "uuid",
  "deployment_status": "building"
}
{
  "status": "ready",
  "deployment_id": "uuid",
  "endpoint": "https://my-app.nodeops.network"
}
{ "status": "failed", "deployment_id": "uuid", "reason": "build error" }

GET /agent/projects

List all projects deployed by the authenticated wallet, with the live URL of the latest deployment.

Auth required: Yes

Response

{
  "wallet": "0x5B6C...",
  "count": 2,
  "projects": [
    {
      "id": "uuid",
      "name": "my-app",
      "displayName": "My App",
      "status": "active",
      "url": "https://my-app.nodeops.network",
      "createdAt": "2026-04-07T10:00:00.000Z"
    }
  ]
}

url is null if the project has no successful deployment. Status values: active, building, deploying, pending, queued, promoting, deleting, failed.

DELETE /agent/projects/:projectId

Permanently delete a project. Only the deployer wallet can delete.

Auth required: Yes

Response

{ "projectId": "uuid", "status": "deleted" }

403 - Wrong wallet (not the deployer).

GET /agent/balance/:address

Check token balances for an address on a chain. No auth required.

Query Parameters

ParamDefaultDescription
chainarbitrumChain name

Response

{
  "address": "0x5B6C...",
  "chain": "arbitrum",
  "chain_id": 42161,
  "balances": [
    {
      "token": "usdc",
      "symbol": "USDC",
      "address": "0xaf88d065...",
      "balance": "18.000000",
      "balance_raw": "18000000",
      "decimals": 6
    }
  ]
}

GET /agent/chains

List all supported chains and accepted tokens. No auth required.

Response

{
  "chains": [
    { "chain": "arbitrum", "chain_id": 42161, "tokens": ["usdc", "usdt"] },
    { "chain": "base", "chain_id": 8453, "tokens": ["usdc", "usdt"] }
  ]
}

Error Codes

CodeMeaning
400Invalid request body
401Bad signature, expired, or nonce reuse
402Payment required or verification failed
403Wrong wallet (not authorized)
409Transaction hash already used
429Rate limited (30 requests/minute)