Arango logo

Arango Control Plane HTTP API

HTTP API reference for the Arango Control Plane (ACP) service, covering the service lifecycle and AI projects

The Arango Control Plane (ACP) service provides an HTTP API for installing, inspecting, upgrading, and removing platform services, as well as for managing the projects that group AutoGraph and AutoRAG work.

Base URL: https://<EXTERNAL_ENDPOINT>:8529/_platform/acp

Authentication uses a Bearer token in the Authorization header. See Obtaining a Bearer token for how to generate one.

Health Check

GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/health

Returns the current health status of the service.

curl -X GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/health \
  -H "Authorization: Bearer <your-bearer-token>"

Response (200):

{
  "status": "OK"
}
This request requires a valid Bearer token. Without a valid Bearer token, the request fails.

Services

Once a service is installed, it is identified by the serviceId that the response returns. You need this ID for the status, upgrade, and uninstall endpoints.

MethodPathDescription
POST/v1/graphanalyticsDeploy a Graph Analytics service
POST/v1/graphragDeploy a GraphRAG service (legacy, superseded by AutoGraph)
POST/v1/graphragimporterDeploy an Importer service
POST/v1/graphragretrieverDeploy an AutoRAG service
POST/v1/autographDeploy an AutoGraph service
POST/v1/llmhostDeploy an LLM Host service
POST/v1/notebookDeploy a Notebook service
POST/v1/udsDeploy a User-Defined Service (UDS). See Deploy a new service via API
POST/v1/serviceDeploy a generic service (any Helm chart)
GET/v1/service/{service_id}Check the status of a service
PUT/v1/service/{service_id}Update a service’s configuration (env vars and labels) and upgrade it to the latest available chart version
DELETE/v1/service/{service_id}Uninstall a service
POST/v1/list_servicesList all installed services (supports label filtering)
GET/v1/healthHealth check

Service Creation Request Body

All service creation endpoints share the same env and labels fields:

{
    "env": {
        "profiles": "gpu,internal",
        "<service-specific-key>": "<value>"
    },
    "labels": {
        "key1": "value1",
        "key2": "value2"
    }
}
  • env: Service-specific parameters as key-value pairs. The required keys depend on the service type; see the corresponding service documentation, such as Importer and AutoRAG.
  • labels (optional): Key-value pairs used to filter and identify services in the platform.
  • profiles (optional): A comma-separated string inside env defining which resource profiles to apply (for example, "gpu,internal"). If not set, the service uses the default profile. Profiles must already exist in the platform.

The /v1/service endpoint additionally takes a service_name field, which lets you deploy any Helm chart:

{
    "service_name": "<helm-chart-service-name>",
    "env": { "<key>": "<value>" },
    "labels": { "<key>": "<value>" }
}

Deploy a Service

POST https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/graphragimporter

Installs a service of the given type. The example below deploys the Importer service.

curl -X POST https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/graphragimporter \
  -H "Authorization: Bearer <your-bearer-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "env": {
      "db_name": "your_database_name",
      "project_name": "your_project_name",
      "chat_api_provider": "openai",
      "chat_api_url": "https://api.openai.com/v1",
      "embedding_api_provider": "openai",
      "embedding_api_url": "https://api.openai.com/v1",
      "chat_model": "gpt-5.4-nano",
      "embedding_model": "text-embedding-3-small",
      "chat_api_key": "your_openai_api_key",
      "embedding_api_key": "your_openai_api_key",
      "embedding_dim": "512"
    }
  }'

Where:

  • db_name: Name of the ArangoDB database where the knowledge graph will be stored
  • project_name: Name of an existing project (see Projects). Used as a prefix for all ArangoDB collections (for example, a project named docs creates docs_Documents, docs_Chunks, etc.)
  • chat_api_provider: Set to "openai" for the OpenAI API, or "custom" for any other OpenAI-compatible API
  • chat_api_url: API endpoint URL for the chat/language model service. Required for "custom"; defaults to the OpenAI URL for "openai"
  • embedding_api_provider: Set to "openai" for the OpenAI API, or "custom" for any other OpenAI-compatible API
  • embedding_api_url: API endpoint URL for the embedding model service. Required for "custom"; defaults to the OpenAI URL for "openai"
  • chat_model: Specific language model to use for text generation and analysis
  • embedding_model: Specific model to use for generating text embeddings
  • chat_api_key: API key for authenticating with the chat/language model service
  • embedding_api_key: API key for authenticating with the embedding model service
  • embedding_dim (optional): Embedding dimension. The default value is 512. Only set manually if using a custom embedding model with a different dimension; must match the embedding model’s output dimension.
Instead of inline API keys, you can use chat_secret_profile_id and embedding_secret_profile_id when your platform supports secret profiles for the Importer install.

Response (200):

{
  "serviceInfo": {
    "serviceId": "arangodb-graphrag-importer-of1ml",
    "description": "Install complete",
    "status": "DEPLOYED",
    "namespace": "arangodb-platform-dev"
  }
}

Check the Status of a Service

GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/service/:serviceId

Returns the current state of an installed service.

Path parameters:

ParameterDescription
serviceIdThe service identifier returned when the service was installed.
curl -X GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/service/arangodb-graphrag-importer-of1ml \
  -H "Authorization: Bearer <your-bearer-token>"

Response (200):

{
  "serviceInfo": {
    "serviceId": "arangodb-graphrag-importer-of1ml",
    "description": "Install complete",
    "status": "DEPLOYED",
    "namespace": "arangodb-platform-dev"
  }
}
DEPLOYED means the service was successfully installed. It may still take a moment to start up and become ready to accept requests. Refer to each service’s documentation for its specific readiness or health check endpoint.

Upgrade a Service

PUT https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/service/:serviceId

Use this endpoint to change the environment variables or labels of a running service, or to upgrade it to the latest chart version. Every call upgrades the Helm chart to the latest version. You cannot select a specific version.

This endpoint only changes the configuration and the chart version of a single running service. It does not change the configuration of the platform, such as Helm values files and operator settings, nor the version of the ArangoDB cluster. You manage these separately with your deployment YAML file and the Helm operator.

Path parameters:

ParameterDescription
serviceIdThe service identifier returned when the service was installed.
curl -X PUT https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/service/arangodb-graphrag-importer-of1ml \
  -H "Authorization: Bearer <your-bearer-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "env": {
      "db_name": "your_database_name",
      "project_name": "your_project_name",
      "chat_api_provider": "openai",
      "chat_api_url": "https://api.openai.com/v1",
      "embedding_api_provider": "openai",
      "embedding_api_url": "https://api.openai.com/v1",
      "chat_model": "<new-chat-model>",
      "embedding_model": "text-embedding-3-small",
      "chat_api_key": "your_openai_api_key",
      "embedding_api_key": "your_openai_api_key",
      "embedding_dim": "512"
    },
    "labels": { "key1": "value1" }
  }'

The request body is optional. Omitting it (or sending {}) triggers an upgrade to the latest chart version with no configuration changes.

  • env (optional): Updated service-specific environment variables. The object replaces the current env rather than merging into it, so send every value the service needs, not only the ones you are changing. The example above resends the full env the service was installed with for that reason, changing only chat_model.
  • labels (optional): Updated key-value pairs used to filter and identify the service in the platform.
Because env is replaced wholesale, any installation value you leave out of the request is dropped. Retrieve the service’s current configuration before you upgrade it, and send the full set of values it was installed with.

Uninstall a Service

DELETE https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/service/:serviceId

Removes an installed service from the platform.

Path parameters:

ParameterDescription
serviceIdThe service identifier returned when the service was installed.
curl -X DELETE https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/service/arangodb-graphrag-importer-of1ml \
  -H "Authorization: Bearer <your-bearer-token>"

Response (200):

{
  "serviceInfo": {
    "serviceId": "arangodb-graphrag-importer-of1ml",
    "description": "Uninstall complete",
    "status": "UNINSTALLED",
    "namespace": "arangodb-platform-dev"
  }
}

List Services

POST https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/list_services

Lists all installed services, optionally filtered by labels.

curl -X POST https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/list_services \
  -H "Authorization: Bearer <your-bearer-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "labels": {
      "key1": "value1"
    }
  }'

An empty request body ({}) returns all installed services.


Projects

Projects group related AutoGraph, Importer, and AutoRAG services and keep their data separate. They are required for all three. For a conceptual overview, see Projects.

MethodPathDescription
POST/v1/projectCreate a new AI project
DELETE/v1/project/{project_db_name}/{project_name}Delete a project
GET/v1/project_by_name/{project_db_name}/{project_name}Get a project by name
GET/v1/all_project_names/{project_db_name}Get all project names in a database
GET/v1/all_projects/{project_db_name}Get all projects in a database

Create a Project

POST https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/project

Creates a project in the specified database. The example below creates a project of type graphrag, the type used by the Importer, AutoGraph, and AutoRAG services:

curl -X POST https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/project \
  -H "Authorization: Bearer <your-bearer-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "project_name": "docs",
    "project_type": "graphrag",
    "project_db_name": "documentation",
    "project_description": "A documentation project."
  }'

Where:

  • project_name (required): Unique identifier for your project. Must be 1-63 characters and contain only letters, numbers, underscores (_), and hyphens (-).
  • project_type (required): Type of project (for example, "graphrag").
  • project_db_name (required): The ArangoDB database name where the project will be created.
  • project_description (optional): A description of your project.

Once created, you can reference the project when you deploy a service. See Projects for how the project name is used.


List Project Names

GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/all_project_names/:project_db_name

Lists all project names in a database. This returns only the project names for quick reference.

Path parameters:

ParameterDescription
project_db_nameThe ArangoDB database name that holds the projects.
curl -X GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/all_project_names/<project_db_name> \
  -H "Authorization: Bearer <your-bearer-token>"

List Projects

GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/all_projects/:project_db_name

Lists all projects with full metadata in a database. This returns complete project objects including metadata, associated services, and knowledge graph information.

Path parameters:

ParameterDescription
project_db_nameThe ArangoDB database name that holds the projects.
curl -X GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/all_projects/<project_db_name> \
  -H "Authorization: Bearer <your-bearer-token>"

Get Project Details

GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/project_by_name/:project_db_name/:project_name

Retrieves comprehensive metadata for a specific project.

Path parameters:

ParameterDescription
project_db_nameThe ArangoDB database name that holds the project.
project_nameThe project name.
curl -X GET https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/project_by_name/<project_db_name>/<project_name> \
  -H "Authorization: Bearer <your-bearer-token>"

The response includes:

  • Project configuration
  • Associated Importer and AutoRAG services
  • Knowledge graph metadata
  • Service status information
  • Last modification timestamp

Delete a Project

DELETE https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/project/:project_db_name/:project_name

Deletes a project. The project record is removed entirely; only the external resources it referenced (services, collections, graphs) remain.

Path parameters:

ParameterDescription
project_db_nameThe ArangoDB database name that holds the project.
project_nameThe project name.
curl -X DELETE https://<EXTERNAL_ENDPOINT>:8529/_platform/acp/v1/project/<project_db_name>/<project_name> \
  -H "Authorization: Bearer <your-bearer-token>"

Deleting a project removes the project record itself, but it does not delete the resources the project referenced:

  • Importer, AutoRAG, and AutoGraph services
  • ArangoDB collections created with the project name as prefix (for example, docs_Documents, docs_Chunks)
  • Knowledge graphs stored in ArangoDB

Delete those separately if you no longer need them.