API Reference

Catalogue

A network is assembled from building blocks that Agent Hub offers you. These read-only endpoints return those building blocks in the form networks use. Workspaces, domains, agents and skills are read from Agent Hub with your access token, so each list contains exactly what you can see there, and models come from your deployment's routing catalogue.

Responses are plain JSON lists or objects, without the success and data envelope that Agent Hub uses. Errors have the shape {"detail": "…"}. A 401 means the request carried no access token or Agent Hub rejected it; other client errors from Agent Hub are passed through with their status. A 502 means Agent Hub could not be reached, and a 504 that it did not answer in time.

List workspaces

GET /networks-api/workspaces

Returns the workspaces you can see.

Returns the same workspace objects as Agent Hub's List workspaces, as a plain list: system workspaces, your own, and workspaces shared with your company. Each workspace includes its domains, agent_count, explicit_agent_ids and component_counts.

Authentication
Bearer token How it works

Parameters

No parameters.

Returns

Returns a list of workspace objects.

Request
curl "$VDF_BASE_URL/networks-api/workspaces" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
[
  {
    "id": "5b0c7d2e-3f41-4c8e-9a57-0f6d2b1e8c34",
    "name": "Claims operations",
    "slug": "claims-operations",
    "description": "Agents and tools for the claims team.",
    "icon": "mdi:briefcase-outline",
    "color": "#2563EB",
    "owner_user_id": 42,
    "company_id": 7,
    "visibility": "company",
    "settings": {
      "apply_to_new_chats": true,
      "allow_callable_networks": true,
      "shared_knowledge": true,
      "workspace_tools_first": true
    },
    "updated_by_user_id": 42,
    "is_default": false,
    "is_system": false,
    "sort_order": 0,
    "created_at": "2026-08-12T10:04:31.518204",
    "updated_at": "2026-09-01T09:30:00.412345",
    "domains": [
      {
        "id": "3f2b8c1e-6a4d-4e0b-9d2f-8a1c5e7b9d02",
        "name": "Claims",
        "slug": "claims",
        "description": "Insurance claims intake, triage and settlement.",
        "owner_user_id": 42,
        "is_system": false,
        "created_at": "2026-08-12T10:01:09.227518",
        "updated_at": "2026-08-20T15:44:36.901442",
        "execution_style": "analysis",
        "preferred_output_formats": [
          "markdown"
        ],
        "action_set": [],
        "context_instructions": "Cite the policy clause behind every recommendation.",
        "tool_preferences": {
          "preferred": [
            "web_search"
          ],
          "blocked": [
            "web_crawler"
          ]
        },
        "model_hints": {
          "preferred_capability": "analysis",
          "min_context_window": 32000
        },
        "regulated": true
      }
    ],
    "domain_count": 1,
    "agent_count": 4,
    "explicit_agent_ids": [
      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
    ],
    "component_counts": {
      "tool": 1,
      "network_template": 1,
      "db_connection": 0,
      "integration": 0
    }
  }
]

Retrieve a workspace by slug

GET /networks-api/workspaces/slug/{slug}

Returns a workspace by its slug, including the components attached to it.

Returns the same object as Agent Hub's Retrieve a workspace by slug. The slug is resolved against your own workspaces first, then system workspaces, then workspaces shared with your company. The response adds components: the tools, network templates, data connections and integrations attached to the workspace, grouped by type.

Authentication
Bearer token How it works

Path parameters

  • slug string Required

    Slug of the workspace, such as claims-operations.

Returns

Returns a workspace object with components.

Errors

  • 404 No workspace with this slug is visible to you.
Request
curl "$VDF_BASE_URL/networks-api/workspaces/slug/claims-operations" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
{
  "id": "5b0c7d2e-3f41-4c8e-9a57-0f6d2b1e8c34",
  "name": "Claims operations",
  "slug": "claims-operations",
  "description": "Agents and tools for the claims team.",
  "icon": "mdi:briefcase-outline",
  "color": "#2563EB",
  "owner_user_id": 42,
  "company_id": 7,
  "visibility": "company",
  "settings": {
    "apply_to_new_chats": true,
    "allow_callable_networks": true,
    "shared_knowledge": true,
    "workspace_tools_first": true
  },
  "updated_by_user_id": 42,
  "is_default": false,
  "is_system": false,
  "sort_order": 0,
  "created_at": "2026-08-12T10:04:31.518204",
  "updated_at": "2026-09-01T09:30:00.412345",
  "domains": [
    {
      "id": "3f2b8c1e-6a4d-4e0b-9d2f-8a1c5e7b9d02",
      "name": "Claims",
      "slug": "claims",
      "description": "Insurance claims intake, triage and settlement.",
      "owner_user_id": 42,
      "is_system": false,
      "created_at": "2026-08-12T10:01:09.227518",
      "updated_at": "2026-08-20T15:44:36.901442",
      "execution_style": "analysis",
      "preferred_output_formats": [
        "markdown"
      ],
      "action_set": [],
      "context_instructions": "Cite the policy clause behind every recommendation.",
      "tool_preferences": {
        "preferred": [
          "web_search"
        ],
        "blocked": [
          "web_crawler"
        ]
      },
      "model_hints": {
        "preferred_capability": "analysis",
        "min_context_window": 32000
      },
      "regulated": true
    }
  ],
  "domain_count": 1,
  "agent_count": 4,
  "explicit_agent_ids": [
    "7c9e6679-7425-40de-944b-e07fc1f90ae7"
  ],
  "component_counts": {
    "tool": 1,
    "network_template": 1,
    "db_connection": 0,
    "integration": 0
  },
  "components": {
    "tool": [
      {
        "id": "d1e6b3a8-4c2f-4f7e-9b05-6a8c2d4e1f93",
        "workspace_id": "5b0c7d2e-3f41-4c8e-9a57-0f6d2b1e8c34",
        "component_type": "tool",
        "ref": "web_search",
        "label": "Web search",
        "meta": {},
        "sort_order": 0,
        "created_at": "2026-08-12T10:06:12.774390"
      }
    ],
    "network_template": [
      {
        "id": "f4a2c7e9-1b3d-4e6f-8a50-2c9d7b1e4f68",
        "workspace_id": "5b0c7d2e-3f41-4c8e-9a57-0f6d2b1e8c34",
        "component_type": "network_template",
        "ref": "claims-intake-review",
        "label": "Claims intake review",
        "meta": {},
        "sort_order": 1,
        "created_at": "2026-08-12T10:06:12.775021"
      }
    ],
    "db_connection": [],
    "integration": []
  }
}

List domains

GET /networks-api/domains

Returns the domains you can see in Agent Hub (system domains and your own), reshaped for networks:

  • domain_id is the domain's slug, which is how a network refers to a domain.
  • tool_preferences merges Agent Hub's preferred and blocked tools into one list; blocked tools are prefixed blocked:.
  • proof_weights are the default weights used to compute a run's proof score.

For the full domain object as Agent Hub stores it, use List domains in Agent Hub.

Authentication
Bearer token How it works

Parameters

No parameters.

Returns

Returns a list of domains.

Request
curl "$VDF_BASE_URL/networks-api/domains" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
[
  {
    "domain_id": "claims",
    "name": "Claims",
    "description": "Insurance claims intake, triage and settlement.",
    "execution_style": "analysis",
    "preferred_output_formats": [
      "markdown"
    ],
    "action_set": [],
    "context_instructions": "Cite the policy clause behind every recommendation.",
    "tool_preferences": [
      "web_search",
      "blocked:web_crawler"
    ],
    "model_hints": {
      "preferred_capability": "analysis",
      "min_context_window": 32000
    },
    "regulated": true,
    "proof_weights": {
      "eval_weight": 0.4,
      "energy_weight": 0.3,
      "determinism_weight": 0.3
    },
    "created_at": "2026-08-12T10:01:09.227518",
    "updated_at": "2026-08-20T15:44:36.901442",
    "tags": []
  }
]

Retrieve a domain

GET /networks-api/domains/{domain_id}

Returns one domain in the form networks use.

Returns a domain in the same form as List domains. When no domain has the UUID you pass, domain_id is matched case-insensitively against the slug and the name of the domains you can list, so the slug a network stores also works.

Authentication
Bearer token How it works

Path parameters

  • domain_id string Required

    The domain's UUID, slug or name.

Returns

Returns a domain.

Errors

  • 404 No domain matches domain_id.
Request
curl "$VDF_BASE_URL/networks-api/domains/claims" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
{
  "domain_id": "claims",
  "name": "Claims",
  "description": "Insurance claims intake, triage and settlement.",
  "execution_style": "analysis",
  "preferred_output_formats": [
    "markdown"
  ],
  "action_set": [],
  "context_instructions": "Cite the policy clause behind every recommendation.",
  "tool_preferences": [
    "web_search",
    "blocked:web_crawler"
  ],
  "model_hints": {
    "preferred_capability": "analysis",
    "min_context_window": 32000
  },
  "regulated": true,
  "proof_weights": {
    "eval_weight": 0.4,
    "energy_weight": 0.3,
    "determinism_weight": 0.3
  },
  "created_at": "2026-08-12T10:01:09.227518",
  "updated_at": "2026-08-20T15:44:36.901442",
  "tags": []
}

List agents

GET /networks-api/agents

Returns the agents you can place in a network, in a compact form for pickers.

Returns the system agents and the agents you created, in the order Agent Hub lists them. domain is the slug of the agent's domain, or its category when it has no domain. An agent without a database ID uses its name as id. capabilities and tags are reserved and currently always empty.

For full agent records, use List agents in Agent Hub.

Authentication
Bearer token How it works

Headers

  • X-Workspace-Slug string

    Workspace slug to filter by when workspace_slug is not set.

Query parameters

  • workspace_slug string

    Only return agents that belong to the workspace with this slug.

  • limit integer

    Maximum number of agents to return, from 1 to 500. Values outside that range are clamped.

    Defaults to 200.

Returns

Returns a list of agents with id, name, description, domain, domain_id, capabilities and tags.

Request
curl "$VDF_BASE_URL/networks-api/agents?workspace_slug=claims-operations" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
[
  {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "name": "claims_triage",
    "description": "Classifies incoming claims and drafts a first response.",
    "domain": "claims",
    "domain_id": "3f2b8c1e-6a4d-4e0b-9d2f-8a1c5e7b9d02",
    "capabilities": [],
    "tags": []
  }
]

List skills

GET /networks-api/skills

Returns the skills you can bind to an LLM node.

Returns the active system skills, your own skills and skills shared with you, sorted by name. When a user skill has the same name as a system skill, the user skill is listed instead. unresolved_tools lists the entries of allowed_tools that are not in the tool catalogue.

For full skill records, see Skills in Agent Hub.

Authentication
Bearer token How it works

Query parameters

  • scope string

    system for system skills only or user for your own only. Any other value returns both.

  • q string

    Only return skills whose name or description contains this text, ignoring case.

Returns

Returns a list of skills with name, description, version, scope, allowed_tools, unresolved_tools, allow_implicit_invocation and argument_hint.

Request
curl "$VDF_BASE_URL/networks-api/skills?q=letter" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
[
  {
    "name": "claims-letter-style",
    "description": "House style and mandatory wording for letters to claimants.",
    "version": "1.0",
    "scope": "user",
    "allowed_tools": [
      "web_search"
    ],
    "unresolved_tools": [],
    "allow_implicit_invocation": true,
    "argument_hint": null
  }
]

List models

GET /networks-api/models

Returns the models in your deployment's routing catalogue.

Returns the models networks can route to, sorted by model_id, for choosing pinned and fallback models and required capabilities while you design a network or template. The list reflects the catalogue as of the service's most recent refresh. If the catalogue cannot be loaded, the endpoint returns an empty list rather than an error.

  • capabilities always includes general, plus tags such as analysis, coding, reasoning, tool_use or embeddings.
  • availability is always for a routable model, disabled when the model is deactivated in the catalogue, and down when its runtime cannot be reached.
  • regulated_approved says whether the model may be used in domains marked regulated.
Authentication
Bearer token How it works

Parameters

No parameters.

Returns

Returns a list of models with model_id, name, provider, capabilities, availability, regulated_approved and context_window (in tokens, or null when unknown).

Request
curl "$VDF_BASE_URL/networks-api/models" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
[
  {
    "model_id": "acme-chat-70b",
    "name": "Acme Chat 70B",
    "provider": "local-cluster",
    "capabilities": [
      "analysis",
      "general",
      "tool_use"
    ],
    "availability": "always",
    "regulated_approved": true,
    "context_window": 131072
  }
]