├── README.md └── solanabeach.svg /README.md: -------------------------------------------------------------------------------- 1 | # Solana Beach API 2 | 3 | Hi, thanks for your interest in the Solana Beach API. 4 | 5 | ## 📋 Table of Contents 6 | 7 | - [API Key Request](#api-key-request) 8 | - [Rate Limits](#rate-limits) 9 | - [Documentation](#documentation) 10 | - [Account Data](#account-data) *(v1 API)* 11 | - [Block Data](#block-data) 12 | - [Dashboard Data](#dashboard-data) 13 | - [Transaction Data](#transaction-data) *(partially v1 API)* 14 | - [Validator Data](#validator-data) 15 | - [Validators Data](#validators-data) 16 | - [We Appreciate Your Delegation](#we-appreciate-your-delegation) 17 | 18 | --- 19 | 20 | ## 🔑 Please request an API-Key 21 | 22 | To receive a key please join our [Telegram Group](https://t.me/+UW04VHylcMdlZmUy) and send a DM to one of the team members. 23 | 24 | ## ⚙️ Rate Limits 25 | 26 | The two tables below show the rate limit restrictions and how you can trace and throttle your consumption. 27 | 28 | | Rate Limiter | Limit | Relevance | 29 | | ----------- | ----- | ------- | 30 | | **Standard** | 100 requests / 10 seconds | This rate limiter counts every request | 31 | | **On-Demand** | 600 requests / 20 minutes | This rate limiter counts every request that
triggers a call to an external data provider | 32 | 33 | 34 | | Response Header | Relevance | 35 | | -------- | ------- | 36 | | **Solana-Beach-Standard-Credits-Remaining** | You can use this value to throttle your scripts | 37 | | **Solana-Beach-Standard-Credits-Consumed** | You can use this value to trace your consumption | 38 | | **Solana-Beach-On-Demand-Credits-Remaining** | You can use this value to throttle your scripts | 39 | | **Solana-Beach-On-Demand-Credits-Consumed** | You can use this value to trace your consumption | 40 | 41 | --- 42 | 43 | ## 📚 Documentation 44 | 45 | Our REST-API servers are available under the Base URL `https://api.solanabeach.io/v2`. 46 | 47 | Your requests must use the HTTP `GET` method and must include a `Accept: application/json` and `Authorization: Bearer {YOUR-API-KEY}` header. 48 | 49 | If the HTTP response status code reports an error the response schema will look like this: 50 | 51 | ```json 52 | { 53 | "err": "string" 54 | } 55 | ``` 56 | 57 | --- 58 | 59 | ### 🪪 Account Data 60 | 61 | > ⚠️ **API Version Note**: All Account Data endpoints use Base URL `https://api.solanabeach.io/v1` 62 | 63 | #### `GET /account/{pubkey}` 64 | **Fetch account fields** 65 | 66 | Returns detailed information about a specific account. 67 | 68 |
69 | Response Schema 70 |
71 | 72 | ```json 73 | { 74 | "type": "string", 75 | "value": { 76 | "base": { 77 | "address": { 78 | "address": "string", 79 | "name": "string", 80 | "logo": "string", 81 | "ticker": "string", 82 | "cmcId": "string" 83 | }, 84 | "balance": 0, 85 | "executable": true, 86 | "owner": { 87 | "address": "string", 88 | "name": "string", 89 | "logo": "string", 90 | "ticker": "string", 91 | "cmcId": "string" 92 | }, 93 | "rentEpoch": 0, 94 | "dataSize": 0 95 | }, 96 | "extended": {} 97 | } 98 | } 99 | ``` 100 |
101 |
102 | 103 | #### `GET /account/{pubkey}/transactions` 104 | **Fetch transactions** 105 | 106 | Returns transactions associated with the specified account. 107 | 108 |
109 | Query Options 110 |
111 | 112 | | Parameter | Description | Default | 113 | | ----------- | ----- | ------- | 114 | | `before` | The signature of the last transaction you want to search backwards from | - | 115 | | `limit` | The upper limit of transactions you want to receive | - | 116 | 117 |
118 |
119 | 120 |
121 | Response Schema 122 |
123 | 124 | ```json 125 | [ 126 | { 127 | "transactionHash": "string", 128 | "blockNumber": 0, 129 | "index": 0, 130 | "accounts": [ 131 | { 132 | "account": { 133 | "address": "string", 134 | "name": "string", 135 | "logo": "string", 136 | "ticker": "string", 137 | "cmcId": "string" 138 | }, 139 | "writable": true, 140 | "signer": true, 141 | "program": true 142 | } 143 | ], 144 | "header": { 145 | "numRequiredSignatures": 0, 146 | "numReadonlySignedAccounts": 0, 147 | "numReadonlyUnsignedAccounts": 0 148 | }, 149 | "instructions": [ 150 | { 151 | "parsed": {}, 152 | "raw": { 153 | "data": "string", 154 | "accounts": [ 155 | 0 156 | ], 157 | "programIdIndex": 0 158 | } 159 | } 160 | ], 161 | "recentBlockhash": "string", 162 | "signatures": [ 163 | "string" 164 | ], 165 | "meta": { 166 | "err": {}, 167 | "fee": 0, 168 | "status": {}, 169 | "logMessages": [ 170 | "string" 171 | ], 172 | "preBalances": [ 173 | 0 174 | ], 175 | "postBalances": [ 176 | 0 177 | ] 178 | }, 179 | "valid": true, 180 | "blocktime": { 181 | "absolute": 0, 182 | "relative": 0 183 | }, 184 | "mostImportantInstruction": { 185 | "name": "string", 186 | "weight": 0, 187 | "index": 0 188 | }, 189 | "smart": [ 190 | { 191 | "type": "string", 192 | "value": "string" 193 | } 194 | ], 195 | "ondemand": true 196 | } 197 | ] 198 | ``` 199 |
200 |
201 | 202 | #### `GET /account/{pubkey}/stakes` 203 | **Fetch stake accounts** 204 | 205 | Returns stake accounts associated with the specified account. 206 | 207 |
208 | Response Schema 209 |
210 | 211 | ```json 212 | [ 213 | { 214 | "pubkey": "string", 215 | "lamports": 0, 216 | "data": { 217 | "state": 0, 218 | "meta": { 219 | "rent_exempt_reserve": 0, 220 | "authorized": { 221 | "staker": "string", 222 | "withdrawer": "string" 223 | } 224 | }, 225 | "lockup": { 226 | "unix_timestamp": 0, 227 | "epoch": 0, 228 | "custodian": "string" 229 | }, 230 | "stake": { 231 | "delegation": { 232 | "voter_pubkey": "string", 233 | "stake": 0, 234 | "activation_epoch": 0, 235 | "deactivation_epoch": 0, 236 | "warmup_cooldown_rate": 0, 237 | "validatorInfo": { 238 | "name": "string", 239 | "image": "string", 240 | "website": "string", 241 | "nodePubkey": "string" 242 | } 243 | }, 244 | "credits_observed": 0 245 | } 246 | } 247 | } 248 | ] 249 | ``` 250 |
251 |
252 | 253 | #### `GET /account/{stake_pubkey}/stake-rewards` 254 | **Fetch stake account rewards** 255 | 256 | Returns rewards for the specified stake account. 257 | 258 |
259 | Query Options 260 |
261 | 262 | | Parameter | Description | Default | 263 | | ----------- | ----- | ------- | 264 | | `cursor` | The epoch of the last stake reward you want to search backwards from | - | 265 | 266 |
267 |
268 | 269 |
270 | Response Schema 271 |
272 | 273 | ```json 274 | [ 275 | { 276 | "epoch": 0, 277 | "effectiveSlot": 0, 278 | "amount": "string", 279 | "postBalance": "string", 280 | "percentChange": 0, 281 | "apr": 0 282 | } 283 | ] 284 | ``` 285 |
286 |
287 | 288 | #### `GET /account/{pubkey}/tokens` 289 | **Fetch token accounts** 290 | 291 | Returns token accounts associated with the specified account. 292 | 293 |
294 | Response Schema 295 |
296 | 297 | ```json 298 | [ 299 | { 300 | "mint": { 301 | "address": "string", 302 | "name": "string", 303 | "logo": "string", 304 | "ticker": "string", 305 | "cmcId": "string" 306 | }, 307 | "amount": 0, 308 | "address": { 309 | "address": "string", 310 | "name": "string", 311 | "logo": "string", 312 | "ticker": "string", 313 | "cmcId": "string" 314 | }, 315 | "decimals": 0 316 | } 317 | ] 318 | ``` 319 |
320 |
321 | 322 | #### `GET /account/{pubkey}/token-transfers` 323 | **Fetch token account transfers** 324 | 325 | Returns token transfers associated with the specified account. 326 | 327 |
328 | Response Schema 329 |
330 | 331 | ```json 332 | [ 333 | { 334 | "blocknumber": 0, 335 | "txhash": "string", 336 | "mint": { 337 | "address": "string", 338 | "name": "string", 339 | "logo": "string", 340 | "ticker": "string", 341 | "cmcId": "string" 342 | }, 343 | "valid": true, 344 | "amount": 0, 345 | "source": { 346 | "address": "string", 347 | "name": "string", 348 | "logo": "string", 349 | "ticker": "string", 350 | "cmcId": "string" 351 | }, 352 | "destination": { 353 | "address": "string", 354 | "name": "string", 355 | "logo": "string", 356 | "ticker": "string", 357 | "cmcId": "string" 358 | }, 359 | "inner": true, 360 | "txindex": 0, 361 | "timestamp": { 362 | "absolute": 0, 363 | "relative": 0 364 | }, 365 | "decimals": 0 366 | } 367 | ] 368 | ``` 369 |
370 |
371 | 372 | 373 | --- 374 | 375 | ### 📦 Block Data 376 | 377 | #### `GET /block/:number` 378 | **Fetch block details** 379 | 380 | Returns detailed information about a specific block, including transaction metrics, program statistics, and validator information. 381 | 382 |
383 | Response Schema 384 |
385 | 386 | ```json 387 | { 388 | "slot": 0, 389 | "blockTime": 0, 390 | "epoch": 0, 391 | "nodePubkey": "string", 392 | "voteTransactions": 0, 393 | "userTransactions": 0, 394 | "voteInstructions": 0, 395 | "userInstructions": 0, 396 | "successTransactions": 0, 397 | "fees": 0, 398 | "programInstructions": { 399 | "programName": { 400 | "totalInstructionCount": 0, 401 | "instructionCount": { 402 | "instructionType1": 0, 403 | "instructionType2": 0, 404 | // ... other instruction types 405 | } 406 | } 407 | } 408 | } 409 | ``` 410 |
411 |
412 | 413 | #### `GET /recent-blocks` 414 | **Fetch recent blocks** 415 | 416 | Returns a list of recent blocks with basic information including slot, block time, and validator details. 417 | 418 |
419 | Query Options 420 |
421 | 422 | | Parameter | Description | Default | 423 | | ------ | ------------------------------------------------------------- | ------- | 424 | | `offset` | The slot of the last block you want to search backwards from | - | 425 | | `limit` | The upper limit of blocks you want to receive | - | 426 | 427 |
428 |
429 | 430 |
431 | Response Schema 432 |
433 | 434 | ```json 435 | { 436 | "blocks": [ 437 | { 438 | "slot": "string", 439 | "blockTime": "string", 440 | "voteInstructions": 0, 441 | "userInstructions": 0, 442 | "fees": "string", 443 | "votePubkey": "string", 444 | "name": "string", 445 | "iconUrl": "string" 446 | } 447 | ], 448 | "pagination": { 449 | "total": 0, 450 | "offset": 0, 451 | "limit": 0 452 | } 453 | } 454 | ``` 455 |
456 |
457 | 458 | #### `GET /top-programs` 459 | **Fetch statistics about most active programs** 460 | 461 | Returns statistics about the most active programs on the network, including total instruction counts and breakdowns of specific instruction types. 462 | 463 |
464 | Response Schema 465 |
466 | 467 | ```json 468 | [ 469 | { 470 | "programName": "string", 471 | "totalInstructionCount": 0, 472 | "instructionCount": { 473 | "instructionType1": 0, 474 | "instructionType2": 0, 475 | // ... other instruction types 476 | } 477 | } 478 | ] 479 | ``` 480 |
481 |
482 | 483 | --- 484 | 485 | ### 📊 Dashboard Data 486 | 487 | #### `GET /transactions-per-second` 488 | **Fetch transactions per second** 489 | 490 | Returns vote and user transactions per second. Data is cached for 60 seconds. 491 | 492 |
493 | Response Schema 494 |
495 | 496 | ```json 497 | { 498 | "voteTransactionsPerSecond": 0, 499 | "userTransactionsPerSecond": 0 500 | } 501 | ``` 502 |
503 |
504 | 505 | #### `GET /epoch-info` 506 | **Fetch current epoch information** 507 | 508 | Returns current epoch information. Data is cached for 10 seconds. 509 | 510 |
511 | Response Schema 512 |
513 | 514 | ```json 515 | { 516 | "absoluteSlot": 0, 517 | "blockHeight": 0, 518 | "epoch": 0, 519 | "slotIndex": 0, 520 | "slotsInEpoch": 0, 521 | "transactionCount": 0, 522 | "epochStartTime": 0, 523 | "slotTime": 0 524 | } 525 | ``` 526 |
527 |
528 | 529 | #### `GET /supply-breakdown` 530 | **Fetch current supply and stake breakdown** 531 | 532 | Returns current supply and stake breakdown. Data is cached for 60 seconds. 533 | 534 |
535 | Response Schema 536 |
537 | 538 | ```json 539 | { 540 | "supply": { 541 | "circulating": 0, 542 | "nonCirculating": 0, 543 | "total": 0 544 | }, 545 | "stake": { 546 | "effective": 0, 547 | "activating": 0, 548 | "deactivating": 0 549 | } 550 | } 551 | ``` 552 |
553 |
554 | 555 | #### `GET /instruction-chart` 556 | **Fetch information about user and vote instructions** 557 | 558 | Returns information about user and vote instructions. Data is cached for 60 seconds. 559 | 560 |
561 | Response Schema 562 |
563 | 564 | ```json 565 | [ 566 | { 567 | "time": "string", 568 | "userInstructions": "string", 569 | "voteInstructions": "string" 570 | } 571 | ] 572 | ``` 573 |
574 |
575 | 576 | --- 577 | 578 | ### 💳 Transaction Data 579 | 580 | > ⚠️ **API Version Note**: The `/transaction/{signature}` endpoint in this section uses Base URL `https://api.solanabeach.io/v1` 581 | 582 | #### `GET /transaction/{signature}` 583 | **Fetch transaction** 584 | 585 | Returns detailed information about a specific transaction. 586 | 587 |
588 | Response Schema 589 |
590 | 591 | ```json 592 | { 593 | "transactionHash": "string", 594 | "blockNumber": 0, 595 | "index": 0, 596 | "accounts": [ 597 | { 598 | "account": { 599 | "address": "string", 600 | "name": "string", 601 | "logo": "string", 602 | "ticker": "string", 603 | "cmcId": "string" 604 | }, 605 | "writable": true, 606 | "signer": true, 607 | "program": true 608 | } 609 | ], 610 | "header": { 611 | "numRequiredSignatures": 0, 612 | "numReadonlySignedAccounts": 0, 613 | "numReadonlyUnsignedAccounts": 0 614 | }, 615 | "instructions": [ 616 | { 617 | "parsed": {}, 618 | "raw": { 619 | "data": "string", 620 | "accounts": [ 621 | 0 622 | ], 623 | "programIdIndex": 0 624 | } 625 | } 626 | ], 627 | "recentBlockhash": "string", 628 | "signatures": [ 629 | "string" 630 | ], 631 | "meta": { 632 | "err": {}, 633 | "fee": 0, 634 | "status": {}, 635 | "logMessages": [ 636 | "string" 637 | ], 638 | "preBalances": [ 639 | 0 640 | ], 641 | "postBalances": [ 642 | 0 643 | ] 644 | }, 645 | "valid": true, 646 | "blocktime": { 647 | "absolute": 0, 648 | "relative": 0 649 | }, 650 | "mostImportantInstruction": { 651 | "name": "string", 652 | "weight": 0, 653 | "index": 0 654 | }, 655 | "smart": [ 656 | { 657 | "type": "string", 658 | "value": "string" 659 | } 660 | ], 661 | "ondemand": true 662 | } 663 | ``` 664 |
665 |
666 | 667 | #### `GET /recent-transactions` 668 | **Fetch recent transactions** 669 | 670 | Returns recent transactions with pagination support. Data is cached for 30 seconds. 671 | 672 |
673 | Query Options 674 |
675 | 676 | | Parameter | Description | Default | Max | 677 | |-----------|-------------|---------|-----| 678 | | offset | Starting position in the transaction list | 0 | - | 679 | | limit | Maximum number of transactions to return | 50 | 100 | 680 | 681 |
682 |
683 | 684 |
685 | Response Schema 686 |
687 | 688 | ```json 689 | { 690 | "slot": "number", 691 | "transactions": [ 692 | { 693 | "transactionHash": "string", 694 | "accounts": [ 695 | { 696 | "isSigner": "boolean", 697 | "isWritable": "boolean", 698 | "isLUT": "boolean", 699 | "account": { 700 | "address": "string", 701 | "name": "string | null", 702 | "ticker": "string | null", 703 | "cmcId": "string | null", 704 | "logo": "string | null", 705 | "meta": { 706 | "url": "string | null" 707 | }, 708 | "decimals": "number | null" 709 | } 710 | } 711 | ], 712 | "recentBlockhash": "string", 713 | "signatures": ["string"], 714 | "meta": { 715 | "computeUnitsConsumed": "number", 716 | "err": "object | null", 717 | "fee": "number", 718 | "loadedAddresses": { 719 | "readonly": ["string"], 720 | "writable": ["string"] 721 | }, 722 | "logMessages": ["string"], 723 | "postBalances": ["number"], 724 | "postTokenBalances": [ 725 | { 726 | "accountIndex": "number", 727 | "mint": "object", 728 | "owner": "object", 729 | "uiTokenAmount": "object" 730 | } 731 | ], 732 | "preBalances": ["number"], 733 | "preTokenBalances": [ 734 | { 735 | "accountIndex": "number", 736 | "mint": "object", 737 | "owner": "object", 738 | "uiTokenAmount": "object" 739 | } 740 | ], 741 | "rewards": ["object"], 742 | "status": "object" 743 | }, 744 | "mostImportantInstruction": { 745 | "name": "string", 746 | "weight": "number", 747 | "index": "number" 748 | }, 749 | "overpaidFees": "number" 750 | } 751 | ], 752 | "pagination": { 753 | "total": "number", 754 | "offset": "number", 755 | "limit": "number" 756 | } 757 | } 758 | ``` 759 |
760 |
761 | 762 | 763 | 764 | --- 765 | 766 | ### 🔍 Validator Data 767 | 768 | #### `GET /validator/:address/stake-accounts` 769 | **Fetch validator stake accounts** 770 | 771 | Returns a paginated list of stake accounts for a given validator. 772 | 773 |
774 | Query Options 775 |
776 | 777 | | Parameter | Description | Default | Max | 778 | | ------- | ---------------------------------------------------- | ------- | ------- | 779 | | `offset` | Starting point for pagination | 0 | - | 780 | | `limit` | Maximum number of results to return | 10 | 1000 | 781 | 782 |
783 |
784 | 785 |
786 | Response Schema 787 |
788 | 789 | ```json 790 | { 791 | "stakeAccounts": [ 792 | { 793 | "stakePubkey": "string", 794 | "stakeAuthority": "string", 795 | "withdrawAuthority": "string", 796 | "state": 0, 797 | "stake": 0, 798 | "activationEpoch": 0, 799 | "deactivationEpoch": 0, 800 | "lastUpdate": "string" 801 | } 802 | ], 803 | "pagination": { 804 | "total": 0, 805 | "offset": 0, 806 | "limit": 0 807 | } 808 | } 809 | ``` 810 |
811 |
812 | 813 | #### `GET /validator/:nodepubkey/block-rewards-history` 814 | **Fetch validator block rewards history** 815 | 816 | Returns historical block rewards data for a specific validator. 817 | 818 |
819 | Query Options 820 |
821 | 822 | | Parameter | Description | Default | Max | 823 | | ---------- | ---------------------------------------------- | ------- | ------- | 824 | | `offset` | Starting point for pagination | 0 | - | 825 | | `limit` | Maximum number of results to return | 10 | 1000 | 826 | 827 |
828 |
829 | 830 |
831 | Response Schema 832 |
833 | 834 | ```json 835 | { 836 | "history": [ 837 | { 838 | "epoch": 0, 839 | "blocks": 0, 840 | "fees": 0 841 | } 842 | ], 843 | "pagination": { 844 | "total": 0, 845 | "offset": 0, 846 | "limit": 0 847 | } 848 | } 849 | ``` 850 |
851 |
852 | 853 | #### `GET /validator/:nodepubkey/success-rate-history` 854 | **Fetch validator success rate history** 855 | 856 | Returns historical success rate data for a specific validator. 857 | 858 |
859 | Query Options 860 |
861 | 862 | | Parameter | Description | Default | Max | 863 | | ---------- | ---------------------------------------------- | ------- | ------- | 864 | | `offset` | Starting point for pagination | 0 | - | 865 | | `limit` | Maximum number of results to return | 10 | 1000 | 866 | 867 |
868 |
869 | 870 |
871 | Response Schema 872 |
873 | 874 | ```json 875 | { 876 | "history": [ 877 | { 878 | "epoch": 0, 879 | "slots": 0, 880 | "blocks": 0, 881 | "successRate": 0 882 | } 883 | ], 884 | "pagination": { 885 | "total": 0, 886 | "offset": 0, 887 | "limit": 0 888 | } 889 | } 890 | ``` 891 |
892 |
893 | 894 | #### `GET /validator/:votepubkey/stake-accounts-history` 895 | **Fetch validator stake accounts history** 896 | 897 | Returns historical stake accounts data for a specific validator. 898 | 899 |
900 | Query Options 901 |
902 | 903 | | Parameter | Description | Default | Max | 904 | | ---------- | ---------------------------------------------- | ------- | ------- | 905 | | `offset` | Starting point for pagination | 0 | - | 906 | | `limit` | Maximum number of results to return | 10 | 1000 | 907 | 908 |
909 |
910 | 911 |
912 | Response Schema 913 |
914 | 915 | ```json 916 | { 917 | "history": [ 918 | { 919 | "epoch": 0, 920 | "stakeAccounts": 0 921 | } 922 | ], 923 | "pagination": { 924 | "total": 0, 925 | "offset": 0, 926 | "limit": 0 927 | } 928 | } 929 | ``` 930 |
931 |
932 | 933 | #### `GET /validator/:votepubkey/stake-history` 934 | **Fetch validator stake history** 935 | 936 | Returns historical stake data for a specific validator. 937 | 938 |
939 | Query Options 940 |
941 | 942 | | Parameter | Description | Default | Max | 943 | | ---------- | ---------------------------------------------- | ------- | ------- | 944 | | `offset` | Starting point for pagination | 0 | - | 945 | | `limit` | Maximum number of results to return | 10 | 1000 | 946 | 947 |
948 |
949 | 950 |
951 | Response Schema 952 |
953 | 954 | ```json 955 | { 956 | "history": [ 957 | { 958 | "epoch": 0, 959 | "activatedStake": 0 960 | } 961 | ], 962 | "pagination": { 963 | "total": 0, 964 | "offset": 0, 965 | "limit": 0 966 | } 967 | } 968 | ``` 969 |
970 |
971 | 972 | #### `GET /cluster-block-rewards-history` 973 | **Fetch cluster block rewards history** 974 | 975 | Returns aggregated block rewards history for the entire cluster. 976 | 977 |
978 | Query Options 979 |
980 | 981 | | Parameter | Description | Default | Max | 982 | | ------ | ---------------------------------------------- | ------- | ------- | 983 | | `offset` | Starting point for pagination | 0 | - | 984 | | `limit` | Maximum number of results to return | 10 | 1000 | 985 | 986 |
987 |
988 | 989 |
990 | Response Schema 991 |
992 | 993 | ```json 994 | { 995 | "history": [ 996 | { 997 | "epoch": 0, 998 | "blocks": 0, 999 | "fees": 0 1000 | } 1001 | ], 1002 | "pagination": { 1003 | "total": 0, 1004 | "offset": 0, 1005 | "limit": 0 1006 | } 1007 | } 1008 | ``` 1009 |
1010 |
1011 | 1012 | #### `GET /cluster-success-rate-history` 1013 | **Fetch cluster success rate history** 1014 | 1015 | Returns aggregated success rate history for the entire cluster. 1016 | 1017 |
1018 | Query Options 1019 |
1020 | 1021 | | Parameter | Description | Default | Max | 1022 | | ------ | ---------------------------------------------- | ------- | ------- | 1023 | | `offset` | Starting point for pagination | 0 | - | 1024 | | `limit` | Maximum number of results to return | 10 | 1000 | 1025 | 1026 |
1027 |
1028 | 1029 |
1030 | Response Schema 1031 |
1032 | 1033 | ```json 1034 | { 1035 | "history": [ 1036 | { 1037 | "epoch": 0, 1038 | "slots": 0, 1039 | "blocks": 0, 1040 | "success_rate": 0 1041 | } 1042 | ], 1043 | "pagination": { 1044 | "total": 0, 1045 | "offset": 0, 1046 | "limit": 0 1047 | } 1048 | } 1049 | ``` 1050 |
1051 |
1052 | 1053 | #### `GET /validator/:votepubkey` 1054 | **Fetch validator details** 1055 | 1056 | Returns general details about a specific validator. 1057 | 1058 |
1059 | Query Options 1060 |
1061 | 1062 | | Parameter | Description | 1063 | | ---------- | ---------------------------- | 1064 | | `votepubkey` | The validator's vote public key | 1065 | 1066 |
1067 |
1068 | 1069 |
1070 | Response Schema 1071 |
1072 | 1073 | ```json 1074 | { 1075 | "votePubkey": "string", 1076 | "nodePubkey": "string", 1077 | "commission": 0, 1078 | "lastVote": "number", 1079 | "delinquent": "true | false", 1080 | "name": "string", 1081 | "iconUrl": "string", 1082 | "website": "string", 1083 | "details": "string", 1084 | "version": "string", 1085 | "continent": "string", 1086 | "country": "string", 1087 | "region": "string", 1088 | "city": "string", 1089 | "asn": 0, 1090 | "asnOrganization": "string" 1091 | } 1092 | ``` 1093 |
1094 |
1095 | 1096 | --- 1097 | 1098 | 1099 | ### 📈 Validators Data 1100 | 1101 | #### `GET /skip-rates` 1102 | **Fetch validator skip rates** 1103 | 1104 | Returns skip rate data for validators. 1105 | 1106 |
1107 | Response Schema 1108 |
1109 | 1110 | ```json 1111 | { 1112 | "skipRate": 0, 1113 | "stakeWeightedSkipRate": 0 1114 | } 1115 | ``` 1116 |
1117 |
1118 | 1119 | #### `GET /staking-yield` 1120 | **Fetch staking yield data** 1121 | 1122 | Returns staking yield data. 1123 | 1124 |
1125 | Response Schema 1126 |
1127 | 1128 | ```json 1129 | { 1130 | "inflationRate": 0, 1131 | "effectiveInflationRate": 0, 1132 | "inflationRewardsApy": 0, 1133 | "blockRewardsApy": 0 1134 | } 1135 | ``` 1136 |
1137 |
1138 | 1139 | #### `GET /node-versions` 1140 | **Fetch node version distribution** 1141 | 1142 | Returns node version distribution data. 1143 | 1144 |
1145 | Response Schema 1146 |
1147 | 1148 | ```json 1149 | [ 1150 | { 1151 | "version": "string", 1152 | "stake": "number" 1153 | } 1154 | ] 1155 | ``` 1156 |
1157 |
1158 | 1159 | #### `GET /validator-list` 1160 | **Fetch paginated list of validators** 1161 | 1162 | Returns a paginated list of validators. 1163 | 1164 |
1165 | Query Options 1166 |
1167 | 1168 | | Parameter | Description | Default | Max | 1169 | | ------ | ---------------------------------------------- | ------- | ------- | 1170 | | `offset` | Starting position in the validator list | 0 | - | 1171 | | `limit` | Maximum number of validators to return | 50 | 100 | 1172 | 1173 |
1174 |
1175 | 1176 |
1177 | Response Schema 1178 |
1179 | 1180 | ```json 1181 | { 1182 | "validators": [ 1183 | { 1184 | "votePubkey": "string", 1185 | "name": "string", 1186 | "iconUrl": "string", 1187 | "version": "string", 1188 | "activatedStake": "number", 1189 | "stakeAccounts": "number", 1190 | "commission": 0, 1191 | "lastVote": "number", 1192 | "delinquent": "true | false" 1193 | } 1194 | ], 1195 | "pagination": { 1196 | "total": "number", 1197 | "offset": "number", 1198 | "limit": "number" 1199 | } 1200 | } 1201 | ``` 1202 |
1203 |
1204 | 1205 | --- 1206 | 1207 | ## 🧡 We appreciate your delegation 1208 | 1209 | If you're satisfied with this product consider choosing the Solana Beach Validator next time you are confronted with the decision where to delegate. 1210 | -------------------------------------------------------------------------------- /solanabeach.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | --------------------------------------------------------------------------------