curl --request GET \
--url https://api.platform.dakota.xyz/payment-agents/{payment_agent_id} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/payment-agents/{payment_agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/payment-agents/{payment_agent_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/payment-agents/{payment_agent_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "2vWxAgent0000000000000000000",
"name": "My Bill Pay",
"customer_id": "2vWxCustomer0000000000000000",
"hosted": true,
"signer_id": "2vWxSigner000000000000000000",
"signer_public_key": "BHkExampleKeyQm",
"wallet_ids": [
"2vWxWalletEvm000000000000000",
"2vWxWalletSol000000000000000"
],
"state": "active"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Not Found",
"status": 404,
"detail": "agent not found"
}Get a hosted payment agent (BETA)
Beta — early access.
Returns the agent together with the wallets it can currently spend from. The wallet_ids are DERIVED at query time from the agent signer’s live signer-group membership (recognition over the policy-engine truth mirror), so they reflect the agent’s access right now — not just at creation time. Use this to read an agent back and reconcile which wallets it is authorized on. The derived state folds the same recognition in (a non-revoked agent recognized on no wallet is pending).
curl --request GET \
--url https://api.platform.dakota.xyz/payment-agents/{payment_agent_id} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/payment-agents/{payment_agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/payment-agents/{payment_agent_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/payment-agents/{payment_agent_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "2vWxAgent0000000000000000000",
"name": "My Bill Pay",
"customer_id": "2vWxCustomer0000000000000000",
"hosted": true,
"signer_id": "2vWxSigner000000000000000000",
"signer_public_key": "BHkExampleKeyQm",
"wallet_ids": [
"2vWxWalletEvm000000000000000",
"2vWxWalletSol000000000000000"
],
"state": "active"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Not Found",
"status": 404,
"detail": "agent not found"
}Authorizations
Path Parameters
Response
Agent found
base64 P-256 SPKI
DERIVED - wallets whose attached signer groups contain the agent's signer. Empty until the customer's endorsed attaches land.
pending is DERIVED - a non-revoked agent recognized on no wallet. It cannot accept instructions until a wallet attach is endorsed.
pending, active, revoked Present on revoke: the signer groups the (now-revoked) agent's signer still belongs to. A revoked signer can't sign, but its group membership lingers — remove signer_id from each (DELETE /signer-groups/{signer_group_id}/signers/{signer_id}) to finish de-provisioning. Absent when there is nothing to clean up.
Show child attributes
Show child attributes
Was this page helpful?

