Nexus Dev
Search…
⌃K

Tritium++ Overview

Nexus API Overview

Nexus provides several APIs to allow users and developers to easily interact with the functionality of the Nexus software stack. Each API is a logically grouped collection of methods that either interact with a specific part of the stack (e.g. ledger, registers), by functional area (accounts, assets, tokens), or by industry specific use case (supply, music).

Protocol

The API server uses the HTTP protocol and supports both GET and POST request methods.
The API's use JSON (JavaScript Object Notation) as their primary data transport mechanism for both input and output. However the API server also supports URL encoded requests (application/x-www-form-urlencoded).

Port

By default the API server runs on port 8080. This can be changed by setting apiport=xxxx in your nexus.conf or starting your daemon with the -apiport=xxxx parameter.

Security

The Nexus API uses the HTTP Basic authentication scheme. This requires the caller to set an Authorization HTTP header with the value Basic <credentials> with the <credendtials> portion set to apiuser:apipassword and base64 encoded. On the API server side the authentication is configured by adding apiuser=<username> and apipassword=<password> to the nexus.conf. NOTE: If you wish to disable authentication entirely, you can do so by setting apiauth=0 in your nexus.conf
The authentication mechanism is complemented by the implementation of SSL encryption (HTTPS). By default the API server is started with SSL disabled. To enable it, please add apissl=1 to your nexus.conf

Multi-user Sessions

The Nexus API can be configured to run in multiuser mode, allowing multiple signature chains to be logged in and use the API simultaneously. This feature can be enabled by setting multiuser=1 in your nexus.conf (default off). When multiuser is enabled, the initial login response will include a session ID value. This session ID must be then be included in all subsequent API calls to endpoints that require a user to be logged in.

Endpoint

Each API endpoint can be invoked through the following semantics:
<api>/<verb>/<noun>
e.g.
http://127.0.0.1:8080/ledger/get/block
NOTE: URI's are always in lowercase.

Error Handling

In the event that an API call results in an error, a JSON object will be returned with the following format:
{
"error" :
{
"code" : -123,
"message" : "An error has occurred"
}
}

DSL Error Codes

Code
Message
1
Query Syntax Error: duplicate wildcard not allowed
2
Query Syntax Error: only '=' and '!=' operator allowed for type [typename]
3
Query Syntax Error: malformed where clause at [clause]
4
Query Syntax Error: must use = with no extra characters.
5
Query Syntax Error: must use '(' and ')' to mix AND/OR statements
6
Query Syntax Error: missing logical operator for group
7
Query Syntax Error: empty where clause at [clause]
8
9

API Error Codes

Code
Message
-1
Method not available: [message]
-2
Method not found: [message]
-3
Method was deprecated at version [version]: [message]
-4
API not found (API name)
-5
Object not available: [message]
-6
content-type [content type] not supported
-7
Unsupported type [type] for parameters.
-8
Unable to Extract Input Address
-9
Session (session) doesn't exist
-10
Invalid session ID
-11
User not logged in
-12
Malformed or missing object encoding for [type]
-13
Object not found
-14
Malformed request URL
-15
Object is not an account or token
-16
Account has not been unlocked for transactions
-17
Failed to create transaction
-18
Invalid format for standard [name]
-19
Field [name] doesn't exist in object
-20
Field [name] is read-only and can't be updated
-21
Field [name] size exceeds maximum length [size]
-22
Field [name] is a reserved field name
-23
Object standard [name] not available for command
-24
No orders found for market
-25
Market order invalid contract: message
-26
Invalid parameter [from], [type] requires correct token
-27
Malformed base64 encoding
-28
Missing parameter [name] for command
-29
Unsupported format [type] specified
-30
Operations failed to execute
-31
Ledger failed to sign transaction
-32
Failed to accept
-33
Incorrect or missing name / address
-34
Asset not found
-35
Invalid parameter [key=type], expecting [type]
-36
Unsupported type [name] for command
-37
Missing token name / address
-38
Missing asset name / address
-39
Missing name_from / address_from
-40
Previous transaction not found
-41
Invalid transaction-id
-42
No valid debits to buy from
-43
No valid contracts in tx
-44
Transaction failed to build
-45
Missing name_to / address_to
-46
Missing amount
-47
Missing price
-48
Token not found
-49
Unsupported type for name/address
-50
Missing txid
-51
No available token accounts for recipient
-52
No more available accounts for debit
-53
Missing name / address of account to credit
-54
Missing name_proof / address_proof to credit
-55
Must have at least two recipients to debit from any
-56
Invalid user-type enum [value]
-57
Invalid Parameter [name]
-58
Empty Parameter [name]
-59
Account to credit is not a NXS account
-60
[name] out of range [max]
-61
Proof account is for a different token than the asset token
-62
Coinbase transaction mined by different user
-63
Could not retrieve default NXS account to credit
-64
Missing recipient account name_to / address_to
-65
Object is not an account
-66
Cannot use aggregate fieldnames with operations
-67
-safemode next hash mismatch, broadcast terminated
-68
Amount too small
-69
Insufficient funds
-70
Trust account not found
-71
Fieldname [name] doesn't exist
-72
Register is not a trust account
-73
Trust account is not a NXS account
-74
No registers found
-75
Value [key=value] exceeds dataset size [size]
-76
Cannot set stake for trust account until after Genesis transaction
-77
Insufficient trust account balance to add to stake
-78
Stake not changed
-79
getblockhash requires the daemon to be started with the -indexheight flag
-80
Missing height
-81
[command] cannot use parameter [name] combined with [name]
-82
Block number out of range
-83
Block not found
-84
Missing hash or height
-85
getblock by height requires the daemon to be started with the -indexheight flag
-86
Missing hash or txid
-87
Invalid or unknown transaction
-88
Missing or empty name
-89
Invalid register_address
-90
Namespace already exists
-91
Missing name / register_address
-92
Name not found
-93
Missing namespace name
-94
Invalid namespace
-95
Namespace does not exist: [namespace]
-96
Cannot create name in [namespace] you don't own
-97
An object with this name already exists in this namespace
-98
An object with this name already exists for this user
-99
Transfer transaction not found
-100
Missing username prefix before name
-101
Unknown name: (name)
-102
Invalid address
-103
Missing register_address parameter
-104
Object not found
-105
Missing address
-106
Invalid name / address
-107
No history found
-108
Failed to read transaction
-109
Specified name/address is not of type (type)
-110
Contract execution failed
-111
Missing genesis / username
-112
Missing username / destination
-113
Destination user doesn't exist
-114
(type) not found
-115
Name / address is not of type (type)
-116
Cannot transfer names created without a namespace
-117
Item not found
-118
[type] operator not supported for this command-set
-119
[name] field(s) does not exist for result
-120
Maximum number of contracts exceeded (99), please try again or use -autotx mode.
-121
Aggregated type [noun] not allowed for [verb]
-122
Invalid operator [op] for command.
-123
[type] unsupported for operator [op]
-124
Operator [op] cannot be used on empty result
-125
Token not found
-126
Address is not for a NXS account"
-127
Missing username
-128
Missing password
-129
Missing PIN
-130
Account already exists
-131
Lock not supported in multiuser mode
-132
Account already locked
-133
Zero-length username
-134
Zero-length password
-135
Zero-length PIN
-136
Account doesn't exist
-137
Couldn't get transaction
-138
No previous transaction found
-139
Invalid credentials
-140
Already logged in with a different username
-141
Already logged out
-142
Username parameter not supported for this method. Names can only be obtained for the logged in user
-143
No notifications available
-144
No transactions found
-145
Unlock not supported in multiuser mode
-146
Account already unlocked for mining
-147
Account already unlocked for transactions
-148
Account already unlocked
-149
Invalid PIN
-150
Transaction rejected
-151
Transaction already in database
-152
Transaction contains no valid transfers
-153
Transfer recipient object not found
-154
Invalid field type (field)
-155
Raw assets can not be updated
-156
Field not found in asset (field)
-157
Field not mutable in asset (field)
-158
Value longer than maximum length (field)
-159
Values must be passed in as strings
-160
Username contains invalid characters
-161
Name contains invalid characters
-162
Namespace can only contain lowercase letters, numbers, periods (.)
-163
Could not retrieve default NXS account to debit fees
-164
Fee account is not a NXS account
-165
Invalid address/name_to
-166
Account is a NXS account. Please use the finance API for accessing NXS accounts.
-167
Invalid reference
-168
Invalid expiration time
-169
Names cannot start with a colon
-170
Global names cannot be created in a namespace
-171
Global names cannot cannot contain a colon
-172
Cannot void a transaction that does not belong to you
-173
Cannot void debit transaction as it has already been fully credited by all recipients
-174
Transaction contains no contracts that can be voided
-175
Invalid supply amount. Supply must be whole number value
-176
Invalid supply amount. The maximum token supply is 18446744073709551615
-177
Invalid decimals amount. Decimals must be whole number value between 0 and 8
-178
Invalid supply/decimals. The maximum supply/decimals cannot exceed 18446744073709551615
-179
Legacy wallet is locked. walletpassphrase required
-180
Incorrect walletpassphrase for Legacy wallet
-181
Trust key not found for Legacy wallet
-182
Trust key previously migrated
-183
Previous stake transaction immature
-184
Previous stake transaction is not a Legacy transaction
-185
Previous transaction is not a stake transaction
-186
Previous stake does not belong to current wallet
-187
Could not get addresses for Legacy wallet
-188
Trust account already has genesis
-189
Trust account already has stake
-190
Trust account already has trust
-191
Username must be a minimum of 2 characters
-192
Password must be a minimum of 8 characters
-193
Pin must be a minimum of 4 characters
-194
Account already unlocked for notifications
-195
Account already unlocked for staking
-196
Account already locked for mining
-197
Account already locked for staking
-198
Account already locked for transactions
-199
Account already locked for notifications
-200
Namespace can't be created with reserved name
-201
Global names can't be created with reserved name
-202
Signature chain not mature after your previous mined/stake block. X more confirmation(s) required.
-203
Autologin user not found
-204
Cannot set stake to a negative amount
-205
Unable to retrieve last stake
-206
Failed to erase expired stake change request
-207
Failed to erase previous stake change request
-208
Failed to save stake change request
-209
Recipient is not a valid account
-210
Recipient account is for a different token
-211
Recipient object has not been tokenized
-212
Invalid token
-213
Cannot create transactions whilst synchronizing
-214
Insufficient funds to pay fee
-215
Max number of recipients (99) exceeded
-216
recipients field must be an array
-217
recipients array is empty
-218
User password / pin not changed
-219
Could not retrieve Crypto object
-220
Missing recovery seed
-221
Recovery seed must be a minimum of 40 characters
-222
User create pending confirmation
-223
Recovery seed not set on this signature chain
-224
Missing description
-225
Missing number
-226
Missing reference
-227
Missing payment account name / address
-228
Missing sender detail
-229
Missing recipient
-230
Recipient user does not exist
-231
Missing recipient detail
-232
Missing items
-233
Invoice must include at least one item
-234
Missing item description
-235
Missing item unit amount
-236
Invalid item unit amount
-237
Item unit amount must be greater than 0
-238
Missing item number of units
-239
Invalid item number of units
-240
Item units must be greater than 0
-241
Invoice not found
-242
Data at this address is not an invoice
-242
Data exceeds max register size
-243
Data at this address is not a supply item
-244
Cannot send invoice to self
-245
Cannot [action] an invoice that has already been paid
-246
Cannot [action] an invoice that has already been cancelled
-247
Could not find invoice transfer transaction
-248
-------------------------
-249
-------------------------
-250
Invoice is not yours to pay
-251
Missing name from or address from
-252
Account to debit is not for the required token
-254
-------------------------------
-255
Cannot process notifications until peers are connected
-256
Cannot process notifications whilst synchronizing
-257
Contract failed peer validation
-258
Unknown genesis
-259
You must specify at least one unlock action
-260
Invalid key name
-261
Key already exists
-262
Invalid scheme
-263
Private keys cannot only be retrieved for keys in the crypto register
-264
Key not yet created
-265
Missing public key
-266
Malformed public key
-267
Shared key encryption only supported for EC (Brainpool) keys
-268
Failed to generate shared key
-269
Malformed private key
-270
Failed to encrypt data
-271
Failed to decrypt data
-272
Unsupported key type
-273
Failed to generate signature
-274
Missing signature
-275
Missing scheme
-276
Error generating hash
-277
Invalid hash function
-278
Scheme already in use
-279
P2P request not found
-280
P2P server not enabled on this node
-281
Missing App ID
-282
Connection not found
-283
A connection to this peer already exists
-284
Failed to connect to peer
-285
No messages available
-286
Timeout waiting for peer to accept connection request
-287
API method not supported in multiuser mode
-288
Cannot unlock for mining in multiuser mode
-289
Cannot unlock for staking in multiuser mode
-290
Invalid credentials. User logged out due to too many password / pin attempts
-291
The cert key cannot be used to create a key pair as it is reserved for a TLS certificate. Please use the create/certificate API method instead.
-292
The cert key cannot be used to sign data as it is reserved for a TLS certificate
-293
Invalid key name. Keys in the crypto register cannot be used for encryption, only signature generation and verification
-294
Certificate has not yet been created for this signature chain. Please use crypto/create/key to create the certificate first
-295
Public key mismatch. Unable to generate certificate
-296
Missing certificate
-297
Cannot log in while synchronizing
-300
API can only be used to lookup data for the currently logged in signature chain when running in client mode
-301
where field must be an array
-302
Missing field in where clause
-303
Missing op in where clause
-304
Missing value in where clause
-305
Unknown operand in where clause
-306
No connections available
-307
Failed to download signature chain
-308
API method only available in client mode
-309
Error loading session
-310
Cannot sent to ALL accounts