Skip to main content

Agents API

Manage AI agent identities and configurations.

Authentication

All endpoints require either:
  • Session auth (browser login cookie)
  • Org API key: Authorization: Bearer conto_xxx...

List Agents

curl https://conto.finance/api/agents \
  -H "Authorization: Bearer $CONTO_API_KEY"

Query Parameters

ParameterTypeDefaultDescription
statusstringallFilter: ACTIVE, PAUSED, SUSPENDED, REVOKED
searchstring-Search by name or description
limitnumber50Results per page (max 100)
offsetnumber0Pagination offset

Response

{
  "agents": [
    {
      "id": "cmm59z8fj000l49h7bjqza11p",
      "name": "Customer Support Agent",
      "agentType": "ANTHROPIC_CLAUDE",
      "status": "ACTIVE",
      "description": "Handles customer inquiries and refunds",
      "publicKey": "0x742d35Cc6634C0532925a3b844Bc9e7595f2e3a1",
      "createdAt": "2024-01-15T10:00:00Z",
      "updatedAt": "2024-01-15T14:30:00Z"
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

Get Agent

curl https://conto.finance/api/agents/{agentId} \
  -H "Authorization: Bearer $CONTO_API_KEY"

Response

{
  "id": "cmm59z8fj000l49h7bjqza11p",
  "name": "Customer Support Agent",
  "agentType": "ANTHROPIC_CLAUDE",
  "status": "ACTIVE",
  "publicKey": "0x742d35Cc6634C0532925a3b844Bc9e7595f2e3a1",
  "description": "Handles customer inquiries and refunds",
  "wallets": [...],
  "policies": [...],
  "_count": { "sentTransactions": 156 },
  "createdAt": "2024-01-15T10:00:00Z",
  "updatedAt": "2024-01-15T14:30:00Z"
}

Create Agent

curl -X POST https://conto.finance/api/agents \
  -H "Authorization: Bearer $CONTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Research Agent",
    "agentType": "CUSTOM",
    "description": "Conducts market research"
  }'

Request Body

FieldTypeRequiredDescription
namestringYesAgent display name (1-100 chars)
agentTypestringYesAgent framework type (see below)
descriptionstringNoAgent description (max 500 chars)
publicKeystringNoEthereum address (0x..., 40 hex chars). Auto-generated if omitted.
externalIdstringNoExternal reference ID (e.g. OpenAI assistant ID)
allowedContextsstring[]NoAllowed execution contexts

Agent Types

TypeDescription
OPENAI_ASSISTANTOpenAI GPT assistant
ANTHROPIC_CLAUDEAnthropic Claude agent
LANGCHAINLangChain agent
AUTOGPTAutoGPT agent
CUSTOMCustom/generic agent

Update Agent

curl -X PATCH https://conto.finance/api/agents/{agentId} \
  -H "Authorization: Bearer $CONTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Agent Name",
    "description": "Updated description",
    "status": "PAUSED"
  }'

Request Body

FieldTypeDescription
namestringAgent display name (1-100 chars)
descriptionstringAgent description (max 500 chars)
statusstringACTIVE, PAUSED, SUSPENDED, REVOKED

Delete Agent

curl -X DELETE https://conto.finance/api/agents/{agentId} \
  -H "Authorization: Bearer $CONTO_API_KEY"

Status Values

StatusDescription
ACTIVEAgent can make payments
PAUSEDTemporarily disabled
SUSPENDEDSuspended pending review
REVOKEDPermanently disabled

Bulk Import Agents

Register multiple agents in a single API call.
curl -X POST https://conto.finance/api/agents/bulk-import \
  -H "Authorization: Bearer $CONTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agents": [
      {
        "name": "GPT-4 Assistant",
        "publicKey": "0x1234567890abcdef1234567890abcdef12345678",
        "agentType": "OPENAI_ASSISTANT",
        "description": "Handles customer support",
        "externalId": "asst_abc123"
      },
      {
        "name": "Claude Agent",
        "publicKey": "0xabcdef1234567890abcdef1234567890abcdef12",
        "agentType": "ANTHROPIC_CLAUDE",
        "description": "Research assistant"
      }
    ],
    "skipExisting": true
  }'

Request Body

FieldTypeRequiredDescription
agentsarrayYesArray of agent objects (1-100 per request)
skipExistingbooleanNoSkip agents whose publicKey already exists (default: true)

Agent Object

FieldTypeRequiredDescription
namestringYesAgent display name (max 100 chars)
publicKeystringYesEVM address (0x..., 40 hex chars)
agentTypestringNoOPENAI_ASSISTANT, ANTHROPIC_CLAUDE, LANGCHAIN, AUTOGPT, CUSTOM (default: CUSTOM)
descriptionstringNoAgent description (max 500 chars)
externalIdstringNoExternal reference ID
curl -X POST https://conto.finance/api/agents/{agentId}/wallets \
  -H "Authorization: Bearer $CONTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "walletId": "cmm59z8fj000m49h7bjqza22q",
    "delegationType": "LIMITED",
    "spendLimitPerTx": 100,
    "spendLimitDaily": 1000,
    "allowedHoursStart": 0,
    "allowedHoursEnd": 24,
    "allowedDays": ["Mon", "Tue", "Wed", "Thu", "Fri"]
  }'

Request Body

FieldTypeRequiredDefaultDescription
walletIdstringYes-Wallet ID (CUID format)
delegationTypestringNoLIMITEDFULL, LIMITED, VIEW_ONLY, PREAPPROVED, ALLOWLIST
spendLimitPerTxnumberNo100Max per transaction
spendLimitDailynumberNo1000Max per day
spendLimitWeeklynumberNo-Max per week
spendLimitMonthlynumberNo-Max per month
allowedHoursStartnumberNo0Start hour (0-23)
allowedHoursEndnumberNo24End hour (1-24). 24 = end of day.
allowedDaysstring[]NoMon-FriDays the agent can transact

Assign Policy to Agent

curl -X POST https://conto.finance/api/agents/{agentId}/policies \
  -H "Authorization: Bearer $CONTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"policyId": "cmm..."}'

Remove Policy from Agent

The policyId is passed as a query parameter, not a path parameter.
curl -X DELETE "https://conto.finance/api/agents/{agentId}/policies?policyId=cmm..." \
  -H "Authorization: Bearer $CONTO_API_KEY"

SDK Keys

List SDK Keys

curl https://conto.finance/api/agents/{agentId}/sdk-keys \
  -H "Authorization: Bearer $CONTO_API_KEY"

Generate SDK Key

The full API key is only shown once. Store it securely!
curl -X POST https://conto.finance/api/agents/{agentId}/sdk-keys \
  -H "Authorization: Bearer $CONTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Key",
    "expiresInDays": 90
  }'

Request Body

FieldTypeRequiredDescription
namestringYesHuman-readable key name
expiresInDaysnumberNoExpiration in days. Omit for no expiration.

Response

{
  "id": "cmm...",
  "key": "conto_agent_abc123def456...",
  "name": "Production Key",
  "keyPrefix": "conto_agent_abc...",
  "expiresAt": "2024-04-15T00:00:00Z"
}

Revoke SDK Key

curl -X DELETE "https://conto.finance/api/agents/{agentId}/sdk-keys?keyId=cmm..." \
  -H "Authorization: Bearer $CONTO_API_KEY"

Error Responses

StatusDescription
400Invalid request data
401Authentication failed
403Missing required scope
404Agent not found
409Agent name already exists