Take the 2-minute tour ×
Stack Apps is a question and answer site for apps, scripts, and development with the Stack Exchange API. It's 100% free, no registration required.

I realize that the shape of the data coming from the API may be different than that reported by the xxx/reputation url, but there seem to be some striking disparities.

see 08/12 and 08/11 in both dumps for an example.

My stackapps.com/reputation graph

total votes: 520
-- bonuses   (2100)
 2       379 (10)
 2       386 (10)
 2       386 (10)
 2       386 (10)
 2       386 (10)
 2       386 (10)
-- 2010-05-31 rep +60   = 2161      
 2       386 (10)
 2       425 (10)
 1       433 (2)
 1       431 (2)
 1       430 (2)
 2       436 (10)
 2       386 (10)
 1       437 (2)
 2       386 (10)
 2       436 (10)
 2       386 (10)
-- 2010-06-01 rep +78   = 2239      
 2       454 (10)
 2       454 (10)
 1       454 (15)
 1       428 (2)
 2       466 (10)
 2       454 (10)
-- 2010-06-02 rep +57   = 2296      
 2       386 (10)
-- 2010-06-03 rep +10   = 2306      
 1       522 (2)
 2       532 (10)
 2       532 (10)
 2       494 (10)
 2       534 (10)
 2       494 (10)
 2       386 (10)
 2       534 (10)
-- 2010-06-04 rep +72   = 2378      
 2       543 (10)
 2       543 (10)
 2       534 (10)
 2       534 (10)
 2       534 (10)
 2       534 (10)
 3       555 (-1)
 2       543 (10)
-- 2010-06-05 rep +69   = 2447      
 2       560 (10)
 1       532 (15)
 1       568 (2)
 2       543 (10)
 2       387 (10)
-- 2010-06-06 rep +47   = 2494      
 2       386 (10)
 2       588 (10)
 2       386 (10)
 2       543 (10)
 2       534 (10)
-- 2010-06-07 rep +50   = 2544      
 2       603 (10)
 2       534 (10)
 2       386 (10)
 2       601 (10)
 1       609 (2)
 2       603 (10)
-- 2010-06-08 rep +52   = 2596      
 1       466 (15)
 2       603 (10)
 2       603 (10)
 2       603 (10)
 2       543 (10)
 2       534 (10)
-- 2010-06-09 rep +65   = 2661      
 2       628 (10)
 2       628 (10)
 2       494 (10)
 2       494 (10)
 2       631 (10)
 2       631 (10)
 1       632 (2)
 2       628 (10)
 2       631 (10)
 2       631 (10)
 2       494 (10)
 2       631 (10)
 2       513 (10)
 2       494 (10)
 2       631 (10)
-- 2010-06-10 rep +142  = 2803      
 2       630 (10)
 2       534 (10)
 2       648 (10)
 2       648 (10)
 2       648 (10)
 3       649 (-1)
 2       648 (10)
 2       648 (10)
 2       648 (10)
 2       631 (10)
 2       648 (10)
 2       603 (10)
 2       631 (10)
-- 2010-06-11 rep +119  = 2922      
 2       630 (10)
 2       666 (10)
 2       672 (10)
 2       672 (10)
-- 2010-06-12 rep +40   = 2962      
 2       685 (10)
 2       685 (10)
 2       494 (10)
 2       513 (10)
 2       662 (10)
-- 2010-06-13 rep +50   = 3012      
 8       666 (-300)
 2       699 (10)
 2       386 (10)
 2       709 (10)
-- 2010-06-14 rep -270  = 2742      
 2       710 (10)
 2       710 (10)
 2       630 (10)
 1       721 (2)
 1       719 (2)
 2       707 (10)
 2       709 (10)
 1       724 (2)
 1       727 (2)
 2       730 (10)
 1       733 (2)
 2       707 (10)
 2       730 (10)
-- 2010-06-15 rep +90   = 2832      
 2       739 (10)
 2       739 (10)
 2       494 (10)
 2       631 (10)
 2       740 (10)
 2       740 (10)
 2       740 (10)
 2       751 (10)
 2       752 (10)
 3       754 (-1)
-- 2010-06-16 rep +89   = 2921      
 2       752 (10)
 2       751 (10)
 2       740 (10)
 2       763 (10)
 2       763 (10)
 2       763 (10)
 2       764 (10)
 2       763 (10)
 2       762 (10)
 2       764 (10)
 2       764 (10)
-- 2010-06-17 rep +110  = 3031      
 2       543 (10)
 2       779 (10)
 1       783 (2)
 2       778 (10)
 1       730 (15)
 2       513 (10)
 2       662 (10)
 2       697 (10)
 2       670 (10)
-- 2010-06-18 rep +87   = 3118      
 2       791 (10)
 2       791 (10)
 2       792 (10)
 2       791 (10)
 2       764 (10)
 2       752 (10)
-- 2010-06-19 rep +60   = 3178      
 3       804 (-2)
 3       804 (-2)
 2       802 (10)
 3       804 (-2)
 3       804 (-2)
 3       807 (-1)
 3       802 (-2)
 2       657 (10)
-- 2010-06-20 rep +9    = 3187      
 2       762 (10)
 2       740 (10)
 2       804 (10)
 2       804 (10)
 1       742 (2)
-- 2010-06-21 rep +42   = 3229      
 2       820 (10)
 2       803 (10)
 2       603 (10)
-- 2010-06-22 rep +30   = 3259      
 2       386 (10)
 2       534 (10)
 2       851 (10)
 1       851 (15)
 2       851 (10)
 2       855 (10)
 2       830 (10)
 2       820 (10)
-- 2010-06-23 rep +85   = 3344      
 3       865 (-1)
 3       877 (-2)
 3       877 (-2)
 3       877 (-2)
 3       871 (-1)
 3       877 (-2)
 2       877 (10)
 2       877 (10)
 3       877 (-2)
-- 2010-06-24 rep +8    = 3352      
 2       877 (10)
 2       820 (10)
 1       883 (2)
 2       877 (10)
 2       877 (10)
 2       889 (10)
 2       889 (10)
 2       877 (10)
 2       877 (10)
 2       891 (10)
 2       890 (10)
 2       892 (10)
-- 2010-06-25 rep +112  = 3464      
 2       877 (10)
 2       764 (10)
-- 2010-06-26 rep +20   = 3484      
 2       877 (10)
 2       904 (10)
 2       877 (10)
 2       908 (10)
 1       908 (15)
 2       908 (10)
 2       892 (10)
 2       911 (10)
 2       909 (10)
 2       739 (10)
 2       911 (10)
-- 2010-06-27 rep +115  = 3599      
 2       913 (10)
 2       918 (10)
 2       918 (10)
 2       889 (10)
 2       918 (10)
 2       877 (10)
 2       889 (10)
 2       918 (10)
-- 2010-06-28 rep +80   = 3679      
 2       670 (10)
 2       661 (10)
 2       660 (10)
 2       913 (10)
 2       889 (10)
 2       908 (10)
 2       764 (10)
 2       911 (10)
-- 2010-06-29 rep +80   = 3759      
 2       929 (10)
 2       889 (10)
 2       929 (10)
 2       752 (10)
 2       752 (10)
 2       752 (10)
 2       752 (10)
 2       820 (10)
 2       752 (10)
 2       941 (10)
 2       941 (10)
-- 2010-06-30 rep +110  = 3869      
 2       877 (10)
 2       954 (10)
 2       954 (10)
 2       955 (10)
 2       438 (10)
 2       820 (10)
-- 2010-07-01 rep +60   = 3929      
 3       974 (-2)
 2       974 (10)
 2       974 (10)
 2       974 (10)
 2       728 (10)
 2       752 (10)
 2       889 (10)
 2       963 (10)
 3       972 (-1)
 2       988 (10)
 2       988 (10)
 2       974 (10)
-- 2010-07-02 rep +97   = 4026      
 2       992 (10)
 2       977 (10)
-- 2010-07-03 rep +20   = 4046      
 2       999 (10)
 2       628 (10)
 2       974 (10)
 2       974 (10)
-- 2010-07-04 rep +40   = 4086      
 2       974 (10)
 3      1006 (-1)
 2       974 (10)
 2       958 (10)
 2       974 (10)
 1      1001 (15)
 2       954 (10)
 2       958 (10)
-- 2010-07-05 rep +74   = 4160      
 2      1025 (10)
 1      1025 (15)
 2       913 (10)
 2       494 (10)
 2       778 (10)
 2      1026 (10)
 2      1030 (10)
 2      1030 (10)
-- 2010-07-06 rep +85   = 4245      
 2      1025 (10)
 2       974 (10)
 2      1030 (10)
 2      1025 (10)
 2       913 (10)
-- 2010-07-07 rep +50   = 4295      
 2      1043 (10)
-- 2010-07-08 rep +10   = 4305      
 1       440 (2)
 1       439 (2)
 1       769 (2)
 1       787 (2)
 1       794 (2)
 1       861 (2)
 1       950 (2)
 2      1060 (10)
 2      1060 (10)
 2      1060 (10)
 1      1061 (2)
 1       676 (2)
 2      1059 (10)
-- 2010-07-09 rep +58   = 4363      
 2       999 (10)
 2       908 (10)
 2       999 (10)
-- 2010-07-10 rep +30   = 4393      
 2       603 (10)
 2       999 (10)
-- 2010-07-11 rep +20   = 4413      
 2       739 (10)
-- 2010-07-12 rep +10   = 4423      
 3       739 (-2)
 2      1092 (10)
-- 2010-07-13 rep +8    = 4431      
 1       688 (2)
 2       687 (10)
-- 2010-07-14 rep +12   = 4443      
 2      1112 (10)
 2      1112 (10)
-- 2010-07-15 rep +20   = 4463      
 2      1120 (10)
 2      1124 (10)
 2      1115 (10)
 2       992 (10)
 2      1115 (10)
 2      1120 (10)
 2      1124 (10)
 2       992 (10)
 2      1092 (10)
 3      1122 (-1)
-- 2010-07-16 rep +89   = 4552      
 2       913 (10)
-- 2010-07-18 rep +10   = 4562      
 1      1136 (2)
 1      1138 (2)
 2      1135 (10)
 2      1142 (10)
-- 2010-07-19 rep +24   = 4586      
 1      1144 (2)
 2      1116 (10)
 2      1117 (10)
 2      1005 (10)
 2      1118 (10)
 2      1142 (10)
 2      1145 (10)
 2       603 (10)
 2      1147 (10)
 1       809 (2)
-- 2010-07-20 rep +84   = 4670      
 2      1159 (10)
 2      1159 (10)
 2      1164 (10)
-- 2010-07-21 rep +30   = 4700      
 2      1176 (10)
 2      1176 (10)
 2      1173 (10)
 2      1176 (10)
 2      1164 (10)
 2      1174 (10)
-- 2010-07-22 rep +60   = 4760      
 2      1186 (10)
 1      1178 (2)
 2      1173 (10)
 2       603 (10)
 2      1184 (10)
 2      1177 (10)
 2      1174 (10)
 2      1184 (10)
 2      1186 (10)
-- 2010-07-23 rep +82   = 4842      
 2      1202 (10)
 1      1204 (2)
 2      1205 (10)
-- 2010-07-24 rep +22   = 4864      
 1      1211 (2)
 2       820 (10)
 2      1215 (10)
 2      1214 (10)
 2      1215 (10)
 2       666 (10)
 2      1021 (10)
 2      1202 (10)
 2      1214 (10)
 1      1214 (15)
-- 2010-07-25 rep +97   = 4961      
 2      1218 (10)
 2       764 (10)
 2       648 (10)
 2      1001 (10)
 2      1146 (10)
 1      1222 (2)
-- 2010-07-26 rep +52   = 5013      
 2       690 (10)
-- 2010-07-27 rep +10   = 5023      
 2      1148 (10)
 2       704 (10)
-- 2010-07-28 rep +20   = 5043      
 3       476 (-1)
 3      1252 (-2)
 2      1145 (10)
 2      1252 (10)
 2      1145 (10)
 2      1248 (10)
 2       785 (10)
 2       466 (10)
 2       890 (10)
 2      1159 (10)
 1      1260 (2)
 2      1252 (10)
-- 2010-07-29 rep +89   = 5132      
 2      1159 (10)
 2       427 (10)
 2       908 (10)
-- 2010-07-30 rep +30   = 5162      
 2      1276 (10)
 2      1276 (10)
-- 2010-07-31 rep +20   = 5182      
 2      1276 (10)
 2       820 (10)
-- 2010-08-01 rep +20   = 5202      
 1      1174 (15)
-- 2010-08-03 rep +15   = 5217      
 2       804 (10)
-- 2010-08-04 rep +10   = 5227      
 2       386 (10)
 2      1308 (10)
-- 2010-08-05 rep +20   = 5247      
 2      1308 (10)
 1      1311 (2)
 2      1308 (10)
 2       386 (10)
-- 2010-08-06 rep +32   = 5279      
 2      1317 (10)
 2      1317 (10)
 2      1305 (10)
 2      1116 (10)
 2      1117 (10)
 2      1155 (10)
 2      1317 (10)
 2      1317 (10)
-- 2010-08-07 rep +80   = 5359      
 1      1320 (2)
 1      1321 (2)
 2      1326 (10)
 1      1326 (15)
 2      1326 (10)
-- 2010-08-08 rep +39   = 5398      
 2      1323 (10)
 2      1326 (10)
 2       694 (10)
 2       691 (10)
 2      1338 (10)
 2       386 (10)
-- 2010-08-09 rep +60   = 5458      
 2      1338 (10)
 2      1339 (10)
 2      1343 (10)
 2      1345 (10)
 2      1344 (10)
 2      1344 (10)
 2       386 (10)
-- 2010-08-10 rep +70   = 5528      
 2      1352 (10)
 2      1352 (10)
 2      1352 (10)
 2      1352 (10)
 2       386 (10)
 2       494 (10)
 2       494 (10)
-- 2010-08-11 rep +70   = 5598      
 2       630 (10)
 2      1352 (10)
 2      1365 (10)
 2      1366 (10)
 2       792 (10)
 2       601 (10)
 2      1367 (10)
 2      1368 (10)
 2      1352 (10)
 2       603 (10)
 2      1368 (10)
 2      1368 (10)
 2      1367 (10)
 2      1368 (10)
 2       534 (10)
 2      1368 (10)
 2      1365 (10)
-- 2010-08-12 rep +170  = 5768      
 2      1323 (10)
 2      1135 (10)
 2      1377 (10)
 2      1377 (10)
 2      1377 (10)
 2      1378 (10)
 2      1381 (10)
-- 2010-08-13 rep +70   = 5838      
 2      1381 (10)
 2      1386 (10)
-- 2010-08-14 rep +20   = 5858      
 1      1119 (2)
-- 2010-08-15 rep +2    = 5860      
 2       694 (10)
 2       691 (10)
 2      1305 (10)
 2       704 (10)
 2       690 (10)
 2      1398 (10)
 2      1398 (10)
 1      1398 (15)
 2       534 (10)
 2      1406 (10)
 2      1407 (10)
 2      1404 (10)
 2      1405 (10)
 2      1408 (10)
 2      1409 (10)
-- 2010-08-16 rep +155  = 6015      
 2      1409 (10)
 2      1412 (10)
 2      1403 (10)
 2      1420 (10)
-- 2010-08-17 rep +40   = 6055      
 2      1407 (10)
-- 2010-08-18 rep +10   = 6065      

** total rep 6065 :)

days represented 77
rep cap was reached via rep from upvotes *only* on 0 days
rep cap was exceeded on 0 days

My rep graph according to the api

2010-05-30   +010   -000
---------------------------------------- 2010-05-30 TOTAL:10
2010-05-31   +010   -000
---------------------------------------- 2010-05-31 TOTAL:10
2010-06-01   +020   -000
---------------------------------------- 2010-06-01 TOTAL:20
2010-06-02   +045   -000
---------------------------------------- 2010-06-02 TOTAL:45
2010-06-05   +010   -000
2010-06-05   +035   -000
---------------------------------------- 2010-06-05 TOTAL:45
2010-06-06   +010   -000
2010-06-06   +010   -000
---------------------------------------- 2010-06-06 TOTAL:20
2010-06-12   +020   -000
---------------------------------------- 2010-06-12 TOTAL:20
2010-06-13   +020   -000
---------------------------------------- 2010-06-13 TOTAL:20
2010-06-14   +010   -000
2010-06-14   +020   -000
---------------------------------------- 2010-06-14 TOTAL:30
2010-06-15   +020   -000
2010-06-15   +020   -000
---------------------------------------- 2010-06-15 TOTAL:40
2010-06-16   +090   -000
2010-06-16   +020   -000
---------------------------------------- 2010-06-16 TOTAL:110
2010-06-17   +040   -000
2010-06-17   +070   -000
---------------------------------------- 2010-06-17 TOTAL:110
2010-06-18   +010   -000
2010-06-18   +035   -000
2010-06-18   +030   -000
2010-06-18   +020   -000
2010-06-18   +010   -000
---------------------------------------- 2010-06-18 TOTAL:105
2010-06-19   +030   -000
---------------------------------------- 2010-06-19 TOTAL:30
2010-06-20   +010   -002
2010-06-20   +010   -000
2010-06-20   +020   -000
2010-06-20   +050   -000
---------------------------------------- 2010-06-20 TOTAL:88
2010-06-22   +010   -000
---------------------------------------- 2010-06-22 TOTAL:10
2010-06-23   +035   -000
2010-06-23   +010   -000
2010-06-23   +010   -000
---------------------------------------- 2010-06-23 TOTAL:55
2010-06-25   +010   -000
---------------------------------------- 2010-06-25 TOTAL:10
2010-06-26   +010   -000
---------------------------------------- 2010-06-26 TOTAL:10
2010-06-27   +020   -000
2010-06-27   +010   -000
---------------------------------------- 2010-06-27 TOTAL:30
2010-06-28   +040   -000
2010-06-28   +020   -000
2010-06-28   +010   -000
2010-06-28   +010   -000
---------------------------------------- 2010-06-28 TOTAL:80
2010-06-29   +030   -000
2010-06-29   +020   -000
---------------------------------------- 2010-06-29 TOTAL:50
2010-06-30   +020   -000
2010-06-30   +120   -010
---------------------------------------- 2010-06-30 TOTAL:130
2010-07-01   +010   -000
2010-07-01   +010   -000
---------------------------------------- 2010-07-01 TOTAL:20
2010-07-02   +010   -000
2010-07-02   +090   -000
2010-07-02   +070   -000
2010-07-02   +010   -000
2010-07-02   +020   -000
---------------------------------------- 2010-07-02 TOTAL:200
2010-07-03   +010   -000
---------------------------------------- 2010-07-03 TOTAL:10
2010-07-04   +040   -000
---------------------------------------- 2010-07-04 TOTAL:40
2010-07-05   +030   -000
2010-07-05   +020   -000
---------------------------------------- 2010-07-05 TOTAL:50
2010-07-06   +020   -000
2010-07-06   +020   -000
2010-07-06   +010   -000
2010-07-06   +100   -002
2010-07-06   +030   -000
---------------------------------------- 2010-07-06 TOTAL:178
2010-07-07   +045   -000
---------------------------------------- 2010-07-07 TOTAL:45
2010-07-08   +010   -000
---------------------------------------- 2010-07-08 TOTAL:10
2010-07-09   +030   -000
2010-07-09   +010   -000
---------------------------------------- 2010-07-09 TOTAL:40
2010-07-11   +040   -000
---------------------------------------- 2010-07-11 TOTAL:40
2010-07-12   +040   -002
---------------------------------------- 2010-07-12 TOTAL:38
2010-07-13   +010   -000
---------------------------------------- 2010-07-13 TOTAL:10
2010-07-15   +020   -000
---------------------------------------- 2010-07-15 TOTAL:20
2010-07-16   +020   -000
2010-07-16   +020   -000
2010-07-16   +020   -000
2010-07-16   +030   -000
2010-07-16   +020   -000
---------------------------------------- 2010-07-16 TOTAL:110
2010-07-17   +050   -000
---------------------------------------- 2010-07-17 TOTAL:50
2010-07-19   +010   -000
2010-07-19   +010   -000
2010-07-19   +020   -000
---------------------------------------- 2010-07-19 TOTAL:40
2010-07-20   +010   -000
---------------------------------------- 2010-07-20 TOTAL:10
2010-07-22   +030   -000
2010-07-22   +020   -000
2010-07-22   +020   -000
---------------------------------------- 2010-07-22 TOTAL:70
2010-07-23   +010   -000
2010-07-23   +020   -000
2010-07-23   +020   -000
---------------------------------------- 2010-07-23 TOTAL:50
2010-07-24   +010   -000
---------------------------------------- 2010-07-24 TOTAL:10
2010-07-25   +020   -000
2010-07-25   +020   -300
2010-07-25   +010   -000
2010-07-25   +020   -000
2010-07-25   +035   -000
2010-07-25   +010   -000
---------------------------------------- 2010-07-25 TOTAL:-185
2010-07-26   +070   -000
2010-07-26   +080   -000
2010-07-26   +025   -000
2010-07-26   +010   -000
2010-07-26   +020   -000
2010-07-26   +050   -000
---------------------------------------- 2010-07-26 TOTAL:255
2010-07-27   +010   -000
---------------------------------------- 2010-07-27 TOTAL:10
2010-07-28   +030   -000
---------------------------------------- 2010-07-28 TOTAL:30
2010-07-29   +010   -000
2010-07-29   +010   -000
2010-07-29   +035   -000
2010-07-29   +020   -000
2010-07-29   +020   -002
2010-07-29   +040   -000
---------------------------------------- 2010-07-29 TOTAL:133
2010-07-30   +010   -000
2010-07-30   +065   -000
---------------------------------------- 2010-07-30 TOTAL:75
2010-08-01   +030   -000
2010-08-01   +070   -000
---------------------------------------- 2010-08-01 TOTAL:100
2010-08-03   +035   -000
---------------------------------------- 2010-08-03 TOTAL:35
2010-08-04   +030   -008
---------------------------------------- 2010-08-04 TOTAL:22
2010-08-05   +030   -000
---------------------------------------- 2010-08-05 TOTAL:30
2010-08-07   +020   -000
2010-08-07   +020   -000
2010-08-07   +010   -000
2010-08-07   +040   -000
---------------------------------------- 2010-08-07 TOTAL:90
2010-08-09   +045   -000
2010-08-09   +030   -000
2010-08-09   +020   -000
2010-08-09   +010   -000
---------------------------------------- 2010-08-09 TOTAL:105
2010-08-10   +010   -000
2010-08-10   +010   -000
2010-08-10   +020   -000
---------------------------------------- 2010-08-10 TOTAL:40
2010-08-11   +030   -000
2010-08-11   +210   -000
2010-08-11   +110   -000
---------------------------------------- 2010-08-11 TOTAL:350
2010-08-12   +040   -000
2010-08-12   +010   -000
2010-08-12   +020   -000
2010-08-12   +020   -000
2010-08-12   +060   -000
2010-08-12   +110   -000
2010-08-12   +020   -000
2010-08-12   +050   -000
2010-08-12   +020   -000
2010-08-12   +070   -000
2010-08-12   +030   -000
2010-08-12   +020   -000
2010-08-12   +020   -000
---------------------------------------- 2010-08-12 TOTAL:490
2010-08-13   +030   -000
2010-08-13   +010   -000
---------------------------------------- 2010-08-13 TOTAL:40
2010-08-14   +020   -000
2010-08-14   +010   -000
---------------------------------------- 2010-08-14 TOTAL:30
2010-08-15   +020   -000
2010-08-15   +020   -000
2010-08-15   +020   -000
2010-08-15   +020   -000
2010-08-15   +020   -000
---------------------------------------- 2010-08-15 TOTAL:100
2010-08-16   +035   -000
2010-08-16   +130   -000
2010-08-16   +010   -000
2010-08-16   +010   -000
2010-08-16   +010   -000
2010-08-16   +010   -000
2010-08-16   +020   -000
---------------------------------------- 2010-08-16 TOTAL:225
2010-08-17   +010   -000
2010-08-17   +010   -000
2010-08-17   +010   -000
---------------------------------------- 2010-08-17 TOTAL:30
2010-08-18   +020   -000
---------------------------------------- 2010-08-18 TOTAL:20
2010-08-19   +010   -000
2010-08-19 -------------------- TOTAL:10


total earned less bonus: 4154

Code used to generate api results

function chartRep(userId, apiEndpoint) {

    var route = Soapi.RouteFactory(apiEndpoint, apiKey)
        .UsersByIdReputation(userId, {
            fromdate: new Date("1/1/1970"),
            todate: new Date("1/1/2050"),
            pagesize: 100,
            page: 1
        });

        route.getPagedResponse(function(data) {
            var events = [];
            var total = 0;
            var items = data.items.reverse();
            var lastDate = buildDate(data.items[0].on_date);
            var dayTotal = 0;

            for (var i = 0; i < items.length; i++) {
                var item = items[i];
                var date = buildDate(item.on_date);
                var metric = "&nbsp;&nbsp;&nbsp;+" + zeroPad(item.positive_rep, 3) + "&nbsp;&nbsp;&nbsp;-" + zeroPad(item.negative_rep, 3);

                if (lastDate && date != lastDate) {

                    events.push("---------------------------------------- " + lastDate + " TOTAL:" + dayTotal);
                    dayTotal = item.positive_rep - item.negative_rep;
                    lastDate = date;
                }
                else {

                    dayTotal += item.positive_rep - item.negative_rep;
                }
                events.push(date + metric);
                total += item.positive_rep - item.negative_rep;
            }
            events.push(date + " -------------------- TOTAL:" + dayTotal);
            events.push("<br/><br/> total earned less bonus: " + total);

            for (var day in events) {
                var div = document.createElement("div");

                div.innerHTML = events[day];
                output.appendChild(div);
            }

        }, function(error) {
            alert(error.message);
        });
}
function buildDate(date) {
    return date.getFullYear() + "-" + zeroPad(date.getMonth() + 1, 2) + "-" + zeroPad(date.getDate(), 2);
}
function zeroPad(number, width) {
    width -= number.toString().length;
    if (width > 0) {
        return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number;
    }
    return number;
};
share|improve this question
add comment

1 Answer 1

Obviously this would best be answered by the one(s) in charge of the API design, but here is my analysis:

The two reputation datasets are shaped quite differently indeed and this does matter in various ways - as such I expect this to be more or less status-bydesign:

Dataset shape

  • The reputation audit is composed of individual reputation change events at the time they occur, i.e. any event triggering a change in a users reputation is logged with a single entry, grouped by day.

  • The reputation route is composed of accumulated reputation changes per post they apply to if affected within selected time frame, i.e. a post will only be included in the result if there has been one ore more reputation change events within the selected time frame; the ondate field seems to denote the most recent reputation change date accordingly.

Your example includes 480 reputation change events (as per audit) affecting 159 posts (as per API), the latter grouped by most recent reputation change date of the respective post accordingly (if my interpretation is correct) - comparing two dates from these entirely differently shaped datasets will naturally be pretty inconclusive ;)

Further observations/implications

  • Reputation changes from down votes on other posts are included in the audit but are excluded from the route because this would compromise anonymous voting otherwise (see my answer on a related feature-request as well).

  • Reputation changes from bonuses are included in the audit but not in the route as you observed already; this makes sense in so far they cannot be assigned to any particular post.

  • Reputation changes from bounties on the other hand are included in the route as well; as with all other posts they will be listed with the most recent reputation change date, be it the bounty or any other activity.

  • Reputation changes from accepting answers are definitely missing; for this I don't see any reason in principle and it might be qualified as a bug therefore, but see Conclusion below for another point of view.

  • Finally there has been an off by one day issue between audit and API while exploring all this which I've not investigated any further, but this may account for minor differences in the result as well.

Conclusion

The API design will allow to replicate the reputation graph quite well, but not so the reputation audit, the latter being partially enforced by the needs to protect the anonymity of down votes.

While the missing reputation for accepting an answer could be qualified as a bug indeed, fixing it would defeat rebuilding the reputation graph feature, where these points are excluded as well.

All in all the main differences observed seem to stem from the distinct dataset shapes (i.e. I haven't analyzed any difference in the result set at hand in detail and it is still irritating that the API results are noticeably higher despite the missing points from accepting answers).

Whether this dataset shape has been chosen deliberately like so or been more or less naturally deduced from the reputation features available is not mine to speculate about.

share|improve this answer
add comment

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .