---
title: "From Agent Deployment to Catalog Entry"
description: "The complete path: register an agent deployment, add integration artifacts, generate a catalog entry, retrieve the record, publish it."
url: "https://real-estate-agency.apim.eu/guides/agent-catalog-workflow"
image: "https://real-estate-agency.apim.eu/_og/d/c_Ocean.takumi,title_From+Agent+Deployment+to+Catalog+Entry,description_~VGhlIGNvbXBsZXRlIHBhdGg6IHJlZ2lzdGVyIGFuIGFnZW50IGRlcGxveW1lbnQsIGFkZCBpbnRlZ3JhdGlvbiBhcnRpZmFjdHMsIGdlbmVyYXRlIGEgY2F0YWxvZyBlbnRyeSwgcmV0cmlldmUgdGhlIHJlY29yZCwgcHVibGlzaCBpdC4,props_eyJ0aGVtZSI6eyJtb2RlIjoiZGFyayIsImNvbG9ycyI6eyJwcmltYXJ5IjoiI0IwMjZGRiJ9fX0,p_Ii9ndWlkZXMvYWdlbnQtY2F0YWxvZy13b3JrZmxvdyI,s_ASLQ3qAitWXi2gtR.png"
---

## From Agent Deployment to Catalog Entry

Five steps that can be fully automated - from an empty record to a published document.

COMP Disclosures Agent Data

## [Step 1: Register an Agent Deployment](#step-1-register-an-agent-deployment)

A catalog entry never comes out of nowhere - it always references an agent deployment. Register it first via **Agent Deployments**.

```bash
curl -X POST https://api.nexora.example/v1/agents \
  -H "apikey: $NEXORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "deployment_tier": "production",
        "title": "Support Triage Copilot",
        "owning_team": { "business_unit": "Customer Experience", "team": "Support Engineering" },
        "integration_count": 6,
        "model_provider": "Anthropic Claude",
        "available_from": "2026-09-01",
        "chargeback": { "rate_percent": 3.5, "cost_center": "CC-4821" },
        "compliance_certification": {
          "cert_type": "SOC2",
          "data_classification_level": "confidential",
          "guardrail_policy_attached": "pii-redaction-v3",
          "valid_until": "2027-04-30"
        }
      }'
```

The `compliance_certification` block is optional when registering a deployment, but mandatory for later publication. See [Compliance Disclosures and Guardrails](https://real-estate-agency.apim.eu/guides/compliance-guardrails).

## [Step 2: Upload Integration Artifacts](#step-2-upload-integration-artifacts)

Model cards and architecture diagrams are attached to the agent deployment, not to a catalog entry. That way they're available to every catalog entry generated later.

```bash
curl -X POST https://api.nexora.example/v1/agents/agt_8f2c1a/artifacts \
  -H "apikey: $NEXORA_API_KEY" \
  -F "file=@model-card.pdf" \
  -F "category=model_card" \
  -F "order=1"
```

At least one model card (`category=model_card`) and one architecture diagram (`category=architecture_diagram`) are recommended. If the model card is missing, the template falls back to a neutral placeholder graphic.

## [Step 3: Generate a Catalog Entry](#step-3-generate-a-catalog-entry)

Want to see the flow without code first? The [Agent Catalog Generator](https://real-estate-agency.apim.eu/agent-catalog-generator) accepts the same agent metadata through a form and produces a finished catalog entry via a language model - the call runs through the Kong AI Gateway.

```bash
curl -X POST https://api.nexora.example/v1/catalog-entries \
  -H "apikey: $NEXORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "agent_id": "agt_8f2c1a",
        "template_id": "tpl_classic",
        "sections": ["capabilities", "data_scope", "integrations", "compliance", "chargeback"]
      }'
```

```json
{
  "id": "cat_4d9b2e",
  "agent_id": "agt_8f2c1a",
  "template_id": "tpl_classic",
  "status": "in_progress",
  "created_at": "2026-08-20T09:41:12Z"
}
```

Generation is asynchronous because artifacts need to be processed and the record laid out. Usually takes two to ten seconds.

## [Step 4: Retrieve the Result](#step-4-retrieve-the-result)

Two paths lead to the finished document:

**Event-driven (recommended).** Subscribe to `catalog_entry.completed`; the webhook carries the catalog entry ID and the download link. See [Webhooks](https://real-estate-agency.apim.eu/guides/webhooks).

**Polling.** Poll `GET /catalog-entries/{id}` with increasing backoff (1s, 2s, 4s, 8s) until `status` reaches `completed`:

```bash
curl https://api.nexora.example/v1/catalog-entries/cat_4d9b2e/record \
  -H "apikey: $NEXORA_API_KEY" \
  -o catalog-entry-support-triage.pdf
```

The link in `record_url` is valid for 24 hours. Store the document instead of passing the link around.

## [Step 5: Publish](#step-5-publish)

```bash
curl -X POST https://api.nexora.example/v1/catalog-entries/cat_4d9b2e/publish \
  -H "apikey: $NEXORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "channels": ["internal-catalog", "governance-board"] }'
```

Before publishing, the API checks the compliance disclosures. If something's missing, you get `422`:

```json
{
  "code": "compliance_disclosure_missing",
  "message": "Compliance disclosures are missing for publication.",
  "details": [
    { "field": "compliance_certification.valid_until", "reason": "missing" }
  ]
}
```

Add the missing figure on the **agent deployment**, regenerate the catalog entry, and publish again. A catalog entry that's already been generated is never changed after the fact - that keeps the history traceable.

## [Common Pitfalls](#common-pitfalls)

-   **A catalog entry with no agent reference.** `agent_id` is required; standalone catalog entries deliberately don't exist.
-   **A template from a different tenant.** `template_id` must belong to your tenant, otherwise `404`.
-   **Record retrieved too early.** Before `status: "completed"`, `/record` returns `409`.
-   **Chargeback-rate change without regenerating.** Updating an agent deployment doesn't automatically update existing catalog entries.