---
title: "Submit a task for execution"
method: POST
path: "/api/v1/tasks/submit"
tags: ["tasks"]
---

# Submit a task for execution

`POST /api/v1/tasks/submit`

Full 8-stage pipeline: guardrail → credit → compute → verify → anchor → receipt

## Request body

- object
  - `prompt` string, required — The prompt/instruction for the LLM
  - `taskType` 'general' | 'code' | 'analysis' | 'creative' | 'trade_signal' | 'evm-action', required — Type of task. Use evm-action for deterministic EVM state verification.
  - `agentId` string, required — Agent fingerprint ID (unique per agent)
  - `metadata` object — Optional metadata for the task
  - `model` string — Model slug from the whitelist (e.g. "llama-3.3-70b"). Defaults to llama-3.3-70b if omitted. Ignored for evm-action type.
  - `evmPayload` object — Required when taskType is evm-action. EVM action payload for deterministic verification.
    - `actionId` string — bytes32 hex — unique action identifier
    - `agentId` string — Agent wallet address (0x...)
    - `preStateRoot` string — bytes32 hex — EVM state root before action
    - `transactions` object[]
      - `target` string — Contract address (0x...)
      - `calldata` string — ABI-encoded calldata (0x...)
      - `value` string — Wei value as decimal string
      - `slippageBps` string — Slippage tolerance in basis points
    - `effectClaimHash` string — bytes32 hex — claimed effect hash

## Response `200`

Task executed — provenance receipt returned

- object
  - `taskId` string
  - `status` 'COMPLETED' | 'UNMETERED' | 'GUARDRAIL_BLOCKED' | 'INSUFFICIENT_CREDITS' | 'COMPUTE_FAILED' | 'OUTPUT_BLOCKED'
  - `agentId` string
  - `model` string
  - `provider` string
  - `latencyMs` number
  - `output` string
  - `ipfsCid` string
  - `stateRoot` string
  - `verificationStatus` string
  - `verificationScore` number
  - `verificationProof` string, nullable — TX hash from on-chain verification anchor
  - `verificationBasescanUrl` string, nullable
  - `attestationUid` string, nullable — EAS Omni-Stamp UID (bytes32 hex)
  - `easscanUrl` string, nullable — EASScan deep link

## Other responses

- `400` — Invalid request body
- `401` — Missing or invalid JWT
- `418` — Guardrail or output policy blocked this task. Your operator config is the wall — check maxCreditsPerDay, maxTasksPerHour, or allowedTaskTypes.

---

[API](https://skmtc.net/humbleaf/apis/agentchain-prior-api.md) · [All operations](https://skmtc.net/humbleaf/apis/agentchain-prior-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/humbleaf/agentchain-prior-api/revisions/33dd194c5572/schema)
