Skip to main content
All Natural API responses follow the JSON:API specification. Each resource has a type, id, attributes, and optionally relationships.

Agent

Represents an autonomous agent that can make payments on behalf of a party.
FieldTypeDescription
type"agent"Resource type
idstringAgent ID (agt_* format)

Attributes

FieldTypeRequiredDescription
namestringYesHuman-readable name for the agent
descriptionstring | nullNoDescription of the agent’s purpose
statusACTIVE, REVOKEDYesAgent status
createdAtstring (datetime)NoCreation timestamp
createdBystring | nullNoUser who created the agent
updatedAtstring (datetime)NoLast update timestamp
updatedBystring | nullNoUser who last updated the agent

Relationships

FieldTypeDescription
partyToOneRelationshipParty that owns the agent
Example
{
  "type": "agent",
  "id": "agt_019cd1798d637a4da75dce386343931d",
  "attributes": {
    "name": "Carrier Payment Agent v2.1",
    "description": "Autonomous agent that pays delivery carriers",
    "status": "ACTIVE",
    "createdAt": "2026-01-04T15:30:00Z",
    "createdBy": "usr_019cd1798d657de5b5fed4198cb9fac0",
    "updatedAt": "2026-01-04T15:30:00Z",
    "updatedBy": "usr_019cd1798d657de5b5fed4198cb9fac0"
  },
  "relationships": {
    "party": {
      "data": { "type": "party", "id": "pty_019cd1798d617f65a79cb965dda9eac3" }
    }
  }
}

Transaction

Represents a financial transaction (payment or transfer) with enriched display data.
FieldTypeDescription
type"transaction"Resource type
idstringTransaction ID (txn_* format)

Attributes

FieldTypeRequiredDescription
amountnumberYesAmount in minor units (cents)
currencystringYesCurrency code
statusstringYesTransfer status
createdAtstringYesCreation timestamp
isDelegatedbooleanYesTrue if this is a delegated customer payment
transactionTypepayment, transferYesTransaction type
categorysent, received, deposit, withdrawalYesCategory
directionINBOUND, OUTBOUNDYesDirection
descriptionstring | nullNoTransfer description
memostring | nullNoTransfer memo
updatedAtstring | nullNoLast update timestamp
customerNamestring | nullNoCustomer name if delegated
customerAgentIdstring | nullNoCustomer agent ID if delegated
senderNamestring | nullNoSender display name
recipientNamestring | nullNoRecipient display name

Relationships

FieldTypeDescription
sourcePartyNullableToOneRelationshipSource party
destinationPartyNullableToOneRelationshipDestination party
sourceWalletNullableToOneRelationshipSource wallet
destinationWalletNullableToOneRelationshipDestination wallet
Example
{
  "type": "transaction",
  "id": "txn_019cd36da26d75cd9b4923f83e80a90b",
  "attributes": {
    "amount": 100000,
    "currency": "USD",
    "status": "COMPLETED",
    "createdAt": "2026-01-04T15:30:00Z",
    "updatedAt": "2026-01-04T15:31:00Z",
    "isDelegated": false,
    "transactionType": "payment",
    "category": "sent",
    "direction": "OUTBOUND",
    "description": "Invoice payment",
    "memo": null,
    "customerName": null,
    "customerAgentId": null,
    "senderName": "Natural",
    "recipientName": "Walt's Business"
  },
  "relationships": {
    "sourceParty": {
      "data": { "type": "party", "id": "pty_019cd1798d617f65a79cb965dda9eac3" }
    },
    "destinationParty": {
      "data": { "type": "party", "id": "pty_019cd1798d627ad9bc302511c4f2c115" }
    },
    "sourceWallet": {
      "data": { "type": "wallet", "id": "wal_019cd3444a6f73db8ef1f4afd074c166" }
    },
    "destinationWallet": {
      "data": null
    }
  }
}

Counterparty

Aggregated counterparty data for a party you’ve transacted with.
FieldTypeDescription
type"party"Resource type
idstringParty ID or synthetic key

Attributes

FieldTypeRequiredDescription
totalAmountMinornumberYesTotal amount in minor units (cents)
transactionCountnumberYesTotal number of payments
firstAtstring (datetime)YesTimestamp of first payment
counterpartyPartyIdstring | nullNoParty ID (pty_*)
partyNamestring | nullNoCounterparty display name
partyEmailstring | nullNoCounterparty primary email
partyStatusstring | nullNoCounterparty party status
Example
{
  "type": "party",
  "id": "pty_019cd3444a6b7afe95c91cfdc74a46eb",
  "attributes": {
    "totalAmountMinor": 500000,
    "transactionCount": 5,
    "firstAt": "2026-01-04T15:30:00Z",
    "counterpartyPartyId": "pty_019cd3444a6b7afe95c91cfdc74a46eb",
    "partyName": "Velocity Logistics",
    "partyEmail": "billing@velocitylogistics.com",
    "partyStatus": "ACTIVE"
  }
}

Customer

Represents a party who has delegated access to you, or a pending delegation invitation. The data array may contain two resource types:
  • CustomerPartyResource (type: "party") — Active delegations
  • CustomerInvitationResource (type: "delegationInvitation") — Pending invitations

Attributes (shared)

FieldTypeRequiredDescription
statusstringYesStatus (ACTIVE, PENDING, etc.)
permissionsstring[]YesGranted permissions
createdAtstring (datetime)YesWhen the item was created
emailstring | nullNoEmail for pending invitations
partyCustomerParty | nullNoParty info (null for pending invitations)
walletAvailableMinornumber | nullNoAvailable wallet balance in cents
walletAccessgranted, denied, noWalletNoWallet access status
Example (active delegation)
{
  "type": "party",
  "id": "dlg_550e8400e29b41d4a716446655440002",
  "attributes": {
    "status": "ACTIVE",
    "permissions": ["payments.read", "wallets.read"],
    "createdAt": "2026-01-10T12:00:00.000Z",
    "party": {
      "id": "pty_4a8c9823f39c42a5b817556766551112",
      "name": "Alice Customer",
      "email": "alice@example.com"
    },
    "walletAvailableMinor": 12500,
    "walletAccess": "granted"
  }
}
Example (pending invitation)
{
  "type": "delegationInvitation",
  "id": "din_550e8400e29b41d4a716446655440003",
  "attributes": {
    "status": "PENDING",
    "permissions": ["payments.read"],
    "createdAt": "2026-01-11T08:30:00.000Z",
    "email": "pending@example.com",
    "party": null,
    "walletAvailableMinor": null,
    "walletAccess": "denied"
  }
}

AgentDelegation

Represents an agent’s authorization to act within a delegation.
FieldTypeDescription
type"agentDelegation"Resource type
idstringAgent delegation ID (adl_* format)

Attributes

FieldTypeRequiredDescription
permissionsstring[]YesGranted permissions (empty = revoked)
createdAtstring (datetime)YesCreation timestamp
updatedAtstring (datetime)YesLast update timestamp
agentNamestring | nullNoAgent display name/label
limitsTransactionLimits | nullNoTransaction limits in cents
expiresAtstring (datetime) | nullNoExpiration timestamp
createdBystring | nullNoUser who created (usr_*)
delegatingPartyNamestring | nullNoCustomer party display name
delegatedPartyNamestring | nullNoDeveloper party display name

Relationships

FieldTypeRequiredDescription
delegationToOneRelationshipYesParent party delegation
agentToOneRelationshipYesAgent granted access
delegatingPartyNullableToOneRelationshipNoCustomer party granting access
delegatedPartyNullableToOneRelationshipNoDeveloper party receiving access
Example
{
  "type": "agentDelegation",
  "id": "adl_550e8400e29b41d4a716446655440000",
  "attributes": {
    "permissions": ["payments.create", "payments.read"],
    "createdAt": "2026-01-04T15:30:00Z",
    "updatedAt": "2026-01-04T15:30:00Z",
    "agentName": null,
    "limits": null,
    "expiresAt": "2027-01-04T15:30:00Z",
    "createdBy": "usr_550e8400e29b41d4a716446655440000"
  },
  "relationships": {
    "delegation": {
      "data": { "type": "delegation", "id": "dlg_550e8400e29b41d4a716446655440000" }
    },
    "agent": {
      "data": { "type": "agent", "id": "agt_3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r" }
    },
    "delegatingParty": {
      "data": { "type": "party", "id": "pty_7c9e6679e29b41d4a716446655440001" }
    },
    "delegatedParty": {
      "data": null
    }
  }
}

DelegationInvitation

Represents an invitation for a customer to delegate access to a developer.
FieldTypeDescription
type"delegationInvitation"Resource type
idstringInvitation ID (din_* format)

Attributes

FieldTypeRequiredDescription
customerEmailstringYesEmail of the invited customer
statusPENDING, ACCEPTED, REVOKED, EXPIREDYesInvitation status
permissionsstring[]YesPermissions requested
expiresAtstringYesISO 8601 expiration timestamp
createdAtstringYesISO 8601 creation timestamp
tokenstring | nullNoMagic link token (only on create)
magicLinkstring | nullNoFull URL for customer (only on create)

Relationships

FieldTypeDescription
delegatedPartyNullableToOneRelationshipDeveloper party that created this invitation
delegatingPartyNullableToOneRelationshipCustomer party (populated after acceptance)
Example
{
  "type": "delegationInvitation",
  "id": "din_550e8400e29b41d4a716446655440000",
  "attributes": {
    "customerEmail": "customer@example.com",
    "status": "PENDING",
    "permissions": ["payments.create", "wallets.read"],
    "expiresAt": "2026-01-11T15:30:00Z",
    "createdAt": "2026-01-04T15:30:00Z",
    "token": null,
    "magicLink": null
  },
  "relationships": {
    "delegatedParty": {
      "data": { "type": "party", "id": "pty_7c9e6679e29b41d4a716446655440002" }
    },
    "delegatingParty": {
      "data": null
    }
  }
}

Represents a shareable link for establishing delegations.
FieldTypeDescription
type"delegationLink"Resource type
idstringLink ID (dlk_* format)

Attributes

FieldTypeRequiredDescription
permissionsstring[]YesPermissions granted by this link
proposedAgentsProposedAgent[]YesAgents proposed for authorization
statusACTIVE, REVOKEDYesLink status
createdAtstringYesCreation timestamp (ISO 8601)
namestringYesLabel for this link
expiresAtstring | nullYesExpiration timestamp
tokenstringYesToken for URL
urlstringYesFull shareable URL

Relationships

FieldTypeDescription
delegatedPartyNullableToOneRelationshipDeveloper party that created this link
Example
{
  "type": "delegationLink",
  "id": "dlk_550e8400e29b41d4a716446655440000",
  "attributes": {
    "permissions": ["payments.create", "payments.read"],
    "proposedAgents": [
      {
        "agentId": "agt_3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r",
        "permissions": ["payments.create"],
        "limits": null
      }
    ],
    "status": "ACTIVE",
    "createdAt": "2026-01-04T15:30:00Z",
    "name": "Carrier Payment Integration",
    "expiresAt": null,
    "token": "lnk_abc123def456",
    "url": "https://app.natural.co/delegation-links/use/lnk_abc123def456"
  },
  "relationships": {
    "delegatedParty": {
      "data": { "type": "party", "id": "pty_7c9e6679e29b41d4a716446655440002" }
    }
  }
}

Party

Represents a business or individual on the Natural platform.
FieldTypeDescription
type"party"Resource type
idstringParty ID (pty_* format)

Attributes

FieldTypeRequiredDescription
partyTypePERSON, ORGYesParty type
legalNamestringYesLegal name of the party
statusPROVISIONAL, ACTIVE, SUSPENDED, INACTIVEYesParty status
kycStatusPENDING, IN_PROGRESS, VERIFIED, REJECTEDYesKYC verification status
createdAtstring (datetime)YesWhen the party was created
updatedAtstring (datetime)YesWhen the party was last updated
displayNamestring | nullNoDisplay name
kycVerifiedAtstring (datetime) | nullNoWhen KYC was verified
primaryEmailstring | nullNoPrimary contact email
primaryPhonestring | nullNoPrimary phone number
addressLine1string | nullNoStreet address
addressCitystring | nullNoCity
addressStatestring | nullNoState or province
addressPostalCodestring | nullNoPostal code
addressCountrystring | nullNoCountry code (e.g., US)
createdBystring | nullNoUser ID who created this party
Example
{
  "type": "party",
  "id": "pty_019cd1798d617f65a79cb965dda9eac3",
  "attributes": {
    "partyType": "ORG",
    "legalName": "Natural AI, Inc",
    "displayName": "Natural",
    "status": "ACTIVE",
    "kycStatus": "VERIFIED",
    "kycVerifiedAt": "2024-01-15T10:30:00Z",
    "primaryEmail": "contact@natural.co",
    "primaryPhone": "+1-555-555-0100",
    "addressLine1": "123 Main Street",
    "addressCity": "San Francisco",
    "addressState": "CA",
    "addressPostalCode": "94105",
    "addressCountry": "US",
    "createdBy": null,
    "createdAt": "2024-01-01T00:00:00Z",
    "updatedAt": "2024-01-15T10:30:00Z"
  }
}

WalletBalance

Represents a party’s wallet balance with detailed breakdown.
FieldTypeDescription
type"walletBalance"Resource type
idstringWallet ID (wal_* format)

Attributes

FieldTypeRequiredDescription
breakdownBalanceBreakdownYesBalance breakdown across all assets
availableBalanceAmountYesAvailable balance
pendingClaimAmountMinornumber | nullNoPending incoming claim amounts (cents)
pendingClaimCountnumber | nullNoNumber of pending incoming claims

Relationships

FieldTypeDescription
partyToOneRelationshipParty that owns the wallet

BalanceAmount

FieldTypeDescription
amountMinornumberAmount in minor units (cents)

BalanceBreakdown

FieldTypeDescription
operatingFundedBalanceAmountOperating funded balance
operatingAdvancedBalanceAmountOperating advanced balance
escrowFundedSettledBalanceAmountSettled escrow funds
escrowAdvancedBalanceAmountEscrow advanced balance
holdsOutboundBalanceAmountOutbound holds
Example
{
  "type": "walletBalance",
  "id": "wal_019cd3444a6f73db8ef1f4afd074c166",
  "attributes": {
    "breakdown": {
      "operatingFunded": { "amountMinor": 1000000 },
      "operatingAdvanced": { "amountMinor": 0 },
      "escrowFundedSettled": { "amountMinor": 0 },
      "escrowAdvanced": { "amountMinor": 0 },
      "holdsOutbound": { "amountMinor": 50000 }
    },
    "available": { "amountMinor": 950000 },
    "pendingClaimAmountMinor": 0,
    "pendingClaimCount": 0
  },
  "relationships": {
    "party": {
      "data": { "type": "party", "id": "pty_019cd1798d617f65a79cb965dda9eac3" }
    }
  }
}

ExternalFundingSource

Represents a linked bank account used for deposits and withdrawals.
FieldTypeDescription
type"externalFundingSource"Resource type
idstringFunding source ID (efs_* format)

Attributes

FieldTypeRequiredDescription
lastFourstringYesLast 4 digits of account
statusnew, active, disabled, deleted, unknownYesStatus
createdAtstring (datetime)YesWhen the funding source was linked
bankNamestring | nullNoBank institution name
accountNamestring | nullNoAccount display name
accountTypechecking, savings, unknown | nullNoAccount type
verificationStatestring | nullNoVerification state

Relationships

FieldTypeDescription
partyToOneRelationshipParty that owns the funding source
Example
{
  "type": "externalFundingSource",
  "id": "efs_019cd3444a77776dadda2c30ff23706d",
  "attributes": {
    "bankName": "Chase",
    "accountName": "Business Checking",
    "accountType": "checking",
    "lastFour": "6789",
    "verificationState": "verifiedInstantAuth",
    "status": "active",
    "createdAt": "2026-01-04T15:30:00Z"
  },
  "relationships": {
    "party": {
      "data": { "type": "party", "id": "pty_019cd1798d617f65a79cb965dda9eac3" }
    }
  }
}

ApiKey

Represents an API key for programmatic access.
FieldTypeDescription
type"apiKey"Resource type
idstringAPI key ID (key_* format)

Attributes

FieldTypeRequiredDescription
apiKeyPrefixstringYesFirst 16 chars of API key
namestringYesHuman-readable name
scopesstring[]YesAuthorized scopes
environmentdevelopment, productionYesEnvironment
statusACTIVE, REVOKEDYesStatus
createdAtstring (datetime)YesCreation timestamp
expiresAtstring (datetime)YesExpiration timestamp
lastUsedAtstring (datetime) | nullNoLast used timestamp
revokedAtstring (datetime) | nullNoRevocation timestamp
createdBystring | nullNoCreator user ID (usr_*)
revokedBystring | nullNoRevoker user ID (usr_*)

Relationships

FieldTypeDescription
partyToOneRelationshipParty that owns the API key
When an API key is first created, the response includes the full apiKey secret in the attributes. This is the only time the secret is shown — store it securely.
Example
{
  "type": "apiKey",
  "id": "key_019cd3604fd67bf5a3b5821ca7836c14",
  "attributes": {
    "apiKeyPrefix": "nat_live_abc12345",
    "name": "Production Backend",
    "scopes": ["payments.read", "payments.create"],
    "environment": "production",
    "status": "ACTIVE",
    "createdAt": "2026-01-04T15:30:00Z",
    "expiresAt": "2026-04-04T15:30:00Z",
    "lastUsedAt": null,
    "revokedAt": null,
    "createdBy": null,
    "revokedBy": null
  },
  "relationships": {
    "party": {
      "data": { "type": "party", "id": "pty_019cd1798d617f65a79cb965dda9eac3" }
    }
  }
}

Invitation

Represents a party membership invitation.
FieldTypeDescription
type"invitation"Resource type
idstringInvitation ID (inv_* format)

Attributes

FieldTypeRequiredDescription
emailstringYesInvitee email address
roleOWNER, ADMIN, MEMBERYesRole assigned on acceptance
statusPENDING, ACCEPTED, REVOKEDYesInvitation status
expiresAtstringYesISO 8601 expiration timestamp
createdAtstringYesISO 8601 creation timestamp
acceptedAtstring | nullNoTimestamp when accepted
Example
{
  "type": "invitation",
  "id": "inv_019cd4a832f37c4b8a1d63e94b7c8d12",
  "attributes": {
    "email": "engineer@velocitylogistics.com",
    "role": "MEMBER",
    "status": "PENDING",
    "expiresAt": "2026-01-11T15:30:00Z",
    "createdAt": "2026-01-04T15:30:00Z",
    "acceptedAt": null
  }
}