Groundfloor Docs

Coderunner API Reference

Coderunner standalone API paths, auth headers, and Control Plane proxy mapping.

Reference for the Coderunner standalone HTTP API and how Control Plane proxies it. Base URL is set via CODERUNNER_URL on Control Plane.

Dev example: https://dev-coderunner.groundfloor.co

Authentication

Every request requires:

HeaderValue
AuthorizationBearer <jwt> — Control Plane-minted RS256 JWT or forwarded user session
x-client-keyWorkspace UUID (external_tenant_id)
x-useridPortal users.id (external_user_id)

JWT claims should include external_tenant_id and external_user_id; headers are required by the standalone service.

Lifecycle

StepCoderunner upstreamControl Plane proxy
Create definitionPOST /api/definitionsPOST …/definition
Upload codePOST /api/file/{id}/uploadPOST …/upload
List versionsGET /api/version/definition?DefinitionId=GET …/versions
Get versionGET /api/version/{versionId}GET …/versions/{versionId}
Delete versionDELETE /api/version/{versionId}DELETE …/versions/{versionId}
DeployPOST /api/deployment/createPOST …/deploy
RunPOST {externalEndpoint} or POST /api/execution/run/onetime/{id}POST …/run

Proxy paths are workspace- and app-scoped under /v1/workspaces/{workspace_id}/apps/{app_slug}/coderunner/….

Create definition

{
  "name": "My function",
  "description": "hello",
  "deploymentType": 1,
  "languageType": 2
}
FieldValues
deploymentType1 Function, 2 BackgroundJob, 3 ScheduleJob, 4 Deployment
languageType1 NodeJS, 2 Python, 3 DotNetScript

Response envelope:

{
  "success": true,
  "message": "Code definition created",
  "data": { "id": "uuid" }
}

Upload (multipart)

  • Description (text field)
  • file (ZIP archive)

Response data.versionId is stored as manifest.coderunner.version_id. Poll version status until Completed (3) before deploy.

StatusCode
Pending1
Processing2
Completed3
Failed4

Deploy

{
  "DefinitionId": "definition-uuid",
  "VersionId": "version-uuid",
  "Configuration": {
    "Cpu": "250m",
    "Memory": "256Mi",
    "CronExpression": "*/5 * * * *"
  }
}

GET /api/deployment/{deploymentId} returns configuration.externalEndpoint — the invoke URL.

Run

{ "payload": { "hello": "world" } }

Response data.executionId maps to manifest.coderunner.last_job_name.

Manifest state

Control Plane tracks IDs under manifest.coderunner:

  • definition_id
  • version_id
  • deployment_id
  • last_job_name
  • last_job_status