jawbone

How much data can I retrieve and store from the Jawbone UP API?


Re-posting from a direct API support contact.

I would like to know how many days of data can I get access to per API call? If limited, how far can we go back in time?

Are you limiting the number of API calls.

I know you don't allow storing data on my side, that's why I would like to query every data in one time to analyze it.


Solution

  • Each endpoint has it's own methods and parameters for retrieving data over time, but in general, the UP API does not place limits on the amount of data you can request in a single call.

    If the amount of data you have requested exceeds a certain limit, the API response will automatically page the requested data and provide you with a next URL that you can use to retrieve the next page of data.

    The only limitation is how much historical data a particular UP user has.

    Here's an example request/response from the moves endpoint.

    Request

    GET https://jawbone.com/nudge/api/v.1.1/users/@me/moves?start_time=1383289200 HTTP/1.1
    Host: jawbone.com
    

    Response

    (Scroll to the bottom to see the next link)

    HTTP 200 OK
    {
       “meta”:
       {
          “user_xid”: “6xl39CsoVp2KirfHwVq_Fx”,
          “message”: “OK”,
          “code”: 200
          "time": 1386122022
       },
       “data”:
       {
          "items": 
          [{
             "xid": "40F7_htRRnQwoMjIFucJ2g",
             "title": "16,804 steps",
             "type": "move",
             "time_created": 1384963500,
             "time_updated": 1385049599,
             "time_completed": 1385099220,
             "date": 20131121
             "snapshot_image": "/nudge/image/e/1385107737/40F7_htRRnQwoMjIFucJ2g/grEGutn_XYZ.png"
             "details": 
             {
                "distance": 14745,
                "km": 14.745,
                "steps": 16804,
                "active_time": 11927,
                "longest_active": 2516,
                "inactive_time": 32760,
                "longest_idle": 27180,
                "calories": 1760.30480012,
                "bmr_day": 1697.47946931,
                "bmr": 1697.47946931,
                "bg_calories": 1099.9439497,
                "wo_calories": 388.506116077,
                "wo_time": 11484,
                "wo_active_time": 3902,
                "wo_count": 2,
                "wo_longest": 2516,
                "sunrise": 1409578680,
                "sunset": 1409625420,
                "tz": "America/Los Angeles",
                "tzs": 
                [
                   [1384963500, "America/Phoenix"],
                   [1385055720, "America/Los_Angeles"]
                ],
                "hourly_totals": 
                {
                    "2013112101":
                    {
                        "distance": 1324,
                        "calories": 90.0120018125,
                        "steps": 1603,
                        "active_time": 793,
                        "inactive_time": 220,
                        "longest_active_time": 302,
                        "longest_idle_time": 780
                    },
                    "2013112101":
                    {
                        "distance": 626,
                        "calories": 47.0120018125,
                        "steps": 455,
                        "active_time": 246,
                        "inactive_time": 260,
                        "longest_active_time": 203,
                        "longest_idle_time": 650
                    },
                    ... more hours ...
                }
             }
          },
          {
          ... more items ....
          }],
          "links": 
          {
             "next": "/nudge/api/v.1.1/users/6xl39CsoVp2KirfHwVq_Fx/moves?page_token=1384390680"
          },
          “size”: 10
       }   
    }
    

    The UP API will not limit the number of calls you can make. However, the API does have Rate Limiting, which could keep you from issuing a large amount of requests over a short period of time. Here's the details from the FAQ:

    What is the rate limit for your API?

    The API includes very high rate-limiting safety valves that should be more than enough for the standard application. If you find that your application is exceeding these limits, please let us know your intended use and call volume, so we can review the provisions.

    And finally, there is no rule preventing you from storing data that you have retrieved from the API. The only requirement is that you comply with the privacy and data removal policies outlined in the UP API terms.