http://api.thingspeak.com
https://api.thingspeak.com
http://184.106.153.149
http://api.thingspeak.com/crossdomain.xml
https://127.0.0.1:3000/update.json.xml .
2014-12-31 23:59:59 . Time zones can be specified via the timezone parameter (optional)POST https://127.0.0.1:3000/update.json.xml api_key=XXXXXXXXXXXXXXXX field1=73
18
0 then the update failed.
{
"channel_id": 3,
"field1": "73",
"field2": null,
"field3": null,
"field4": null,
"field5": null,
"field6": null,
"field7": null,
"field8": null,
"created_at": "2014-02-25T14:13:01-05:00",
"entry_id": 320,
"status": null,
"latitude": null,
"longitude": null,
"elevation": null
}
<?xml version="1.0" encoding="UTF-8"?> <feed> <channel-id type="integer">3</channel-id> <field1>73</field1> <field2 nil="true"/> <field3 nil="true"/> <field4 nil="true"/> <field5 nil="true"/> <field6 nil="true"/> <field7 nil="true"/> <field8 nil="true"/> <created-at type="dateTime">2014-02-25T14:15:42-05:00</created-at> <entry-id type="integer">321</entry-id> <status nil="true"/> <latitude type="decimal" nil="true"/> <longitude type="decimal" nil="true"/> <elevation nil="true"/> </feed>
https://127.0.0.1:3000/channels/CHANNEL_ID/feeds.json.xml ,
replacing CHANNEL_ID with the ID of your Channel.
GET https://127.0.0.1:3000/channels/9/feeds.json.xml?results=2
{
"channel":
{
"id": 9,
"name": "my_house",
"description": "Netduino Plus connected to sensors around the house",
"latitude": "40.44",
"longitude": "-79.996",
"field1": "Light",
"field2": "Outside Temperature",
"created_at": "2010-12-13T20:20:06-05:00",
"updated_at": "2014-02-26T12:43:04-05:00",
"last_entry_id": 6060625
},
"feeds":
[
{
"created_at": "2014-02-26T12:42:49-05:00",
"entry_id": 6060624,
"field1": "188",
"field2": "25.902335456475583"
},
{
"created_at": "2014-02-26T12:43:04-05:00",
"entry_id": 6060625,
"field1": "164",
"field2": "25.222929936305732"
}
]
}
{
"channel":
{
"id": 9,
"name": "my_house",
"description": "Netduino Plus connected to sensors around the house",
"latitude": "40.44",
"longitude": "-79.996",
"field1": "Light",
"field2": "Outside Temperature",
"created_at": "2010-12-13T20:20:06-05:00",
"updated_at": "2014-02-26T12:43:04-05:00",
"last_entry_id": 6060625
},
"feeds":
[
{
"created_at": "2014-02-26T12:42:49-05:00",
"entry_id": 6060624,
"field1": "188",
"field2": "25.902335456475583"
},
{
"created_at": "2014-02-26T12:43:04-05:00",
"entry_id": 6060625,
"field1": "164",
"field2": "25.222929936305732"
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<id type="integer">9</id>
<name>my_house</name>
<description>Netduino Plus connected to sensors around the house</description>
<latitude type="decimal">40.44</latitude>
<longitude type="decimal">-79.996</longitude>
<field1>Light</field1>
<field2>Outside Temperature</field2>
<created-at type="dateTime">2010-12-13T20:20:06-05:00</created-at>
<updated-at type="dateTime">2014-02-26T12:49:19-05:00</updated-at>
<last-entry-id type="integer">6060650</last-entry-id>
<feeds type="array">
<feed>
<created-at type="dateTime">2014-02-26T12:49:04-05:00</created-at>
<entry-id type="integer">6060649</entry-id>
<field1>160</field1>
<field2>25.307855626326962</field2>
<id type="integer" nil="true"/>
</feed>
<feed>
<created-at type="dateTime">2014-02-26T12:49:19-05:00</created-at>
<entry-id type="integer">6060650</entry-id>
<field1>171</field1>
<field2>22.929936305732483</field2>
<id type="integer" nil="true"/>
</feed>
</feeds>
</channel>
https://127.0.0.1:3000/channels/CHANNEL_ID/feeds/last.json.xml ,
replacing CHANNEL_ID with the ID of your Channel.
GET https://127.0.0.1:3000/channels/9/feeds/last.json.xml
{
"created_at": "2014-02-26T21:27:21Z",
"entry_id": 6061519,
"field1": "176",
"field2": "28.195329087048833"
}
{
"created_at": "2014-02-26T21:27:21Z",
"entry_id": 6061519,
"field1": "176",
"field2": "28.195329087048833"
}
<?xml version="1.0" encoding="UTF-8"?> <feed> <created-at type="dateTime">2014-02-26T21:28:51Z</created-at> <entry-id type="integer">6061525</entry-id> <field1>200</field1> <field2>28.365180467091296</field2> <id type="integer" nil="true"/> </feed>
https://127.0.0.1:3000/channels/CHANNEL_ID/feeds/ENTRY_ID.json.xml ,
replacing CHANNEL_ID with the ID of your Channel and ENTRY_ID with the ID of your entry.
GET https://127.0.0.1:3000/channels/9/feeds/6061519.json.xml
{
"created_at": "2014-02-26T21:27:21Z",
"entry_id": 6061519,
"field1": "176",
"field2": "28.195329087048833"
}
{
"created_at": "2014-02-26T21:27:21Z",
"entry_id": 6061519,
"field1": "176",
"field2": "28.195329087048833"
}
<?xml version="1.0" encoding="UTF-8"?> <feed> <created-at type="dateTime">2014-02-26T21:27:21Z</created-at> <entry-id type="integer">6061519</entry-id> <field1>176</field1> <field2>28.195329087048833</field2> <id type="integer" nil="true"/> </feed>
https://127.0.0.1:3000/channels/CHANNEL_ID/fields/FIELD_ID.json.xml ,
replacing CHANNEL_ID with the ID of your Channel and FIELD_ID with the ID of your field.
GET https://127.0.0.1:3000/channels/9/fields/1.json.xml?results=2
{
"channel":
{
"id": 9,
"name": "my_house",
"description": "Netduino Plus connected to sensors around the house",
"latitude": "40.44",
"longitude": "-79.996",
"field1": "Light",
"field2": "Outside Temperature",
"created_at": "2010-12-13T20:20:06-05:00",
"updated_at": "2014-02-26T12:43:04-05:00",
"last_entry_id": 6060625
},
"feeds":
[
{
"created_at": "2014-02-26T12:42:49-05:00",
"entry_id": 6060624,
"field1": "188"
},
{
"created_at": "2014-02-26T12:43:04-05:00",
"entry_id": 6060625,
"field1": "164"
}
]
}
{
"channel":
{
"id": 9,
"name": "my_house",
"description": "Netduino Plus connected to sensors around the house",
"latitude": "40.44",
"longitude": "-79.996",
"field1": "Light",
"field2": "Outside Temperature",
"created_at": "2010-12-13T20:20:06-05:00",
"updated_at": "2014-02-26T12:43:04-05:00",
"last_entry_id": 6060625
},
"feeds":
[
{
"created_at": "2014-02-26T12:42:49-05:00",
"entry_id": 6060624,
"field1": "188"
},
{
"created_at": "2014-02-26T12:43:04-05:00",
"entry_id": 6060625,
"field1": "164"
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<id type="integer">9</id>
<name>my_house</name>
<description>Netduino Plus connected to sensors around the house</description>
<latitude type="decimal">40.44</latitude>
<longitude type="decimal">-79.996</longitude>
<field1>Light</field1>
<field2>Outside Temperature</field2>
<created-at type="dateTime">2010-12-13T20:20:06-05:00</created-at>
<updated-at type="dateTime">2014-02-26T12:49:19-05:00</updated-at>
<last-entry-id type="integer">6060650</last-entry-id>
<feeds type="array">
<feed>
<created-at type="dateTime">2014-02-26T12:49:04-05:00</created-at>
<entry-id type="integer">6060649</entry-id>
<field1>160</field1>
<id type="integer" nil="true"/>
</feed>
<feed>
<created-at type="dateTime">2014-02-26T12:49:19-05:00</created-at>
<entry-id type="integer">6060650</entry-id>
<field1>171</field1>
<id type="integer" nil="true"/>
</feed>
</feeds>
</channel>
https://127.0.0.1:3000/channels/CHANNEL_ID/fields/FIELD_ID/last.json.xml ,
replacing CHANNEL_ID with the ID of your Channel and FIELD_ID with the ID of your field.
GET https://127.0.0.1:3000/channels/9/fields/1/last.json.xml
176
{
"created_at": "2014-02-26T21:27:21Z",
"entry_id": 6061519,
"field1": "176"
}
<?xml version="1.0" encoding="UTF-8"?> <feed> <created-at type="dateTime">2014-02-26T21:28:51Z</created-at> <entry-id type="integer">6061525</entry-id> <field1>200</field1> <id type="integer" nil="true"/> </feed>
https://127.0.0.1:3000/channels/CHANNEL_ID/status.json.xml ,
replacing CHANNEL_ID with the ID of your Channel.
GET https://127.0.0.1:3000/channels/1417/status.json.xml
{
"channel":
{
"name": "CheerLights",
"latitude": "40.5",
"longitude": "-80.22"
},
"feeds":
[
{
"created_at": "2014-02-26T02:28:01Z",
"entry_id": 11888,
"status": "@cheerlights green"
},
{
"created_at": "2014-02-26T22:05:31Z",
"entry_id" :11889,
"status": "@cheerlights blue"
}
]
}
{
"channel":
{
"name": "CheerLights",
"latitude": "40.5",
"longitude": "-80.22"
},
"feeds":
[
{
"created_at": "2014-02-26T02:28:01Z",
"entry_id": 11888,
"status": "@cheerlights green"
},
{
"created_at": "2014-02-26T22:05:31Z",
"entry_id" :11889,
"status": "@cheerlights blue"
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<name>CheerLights</name>
<latitude type="decimal">40.5</latitude>
<longitude type="decimal">-80.22</longitude>
<feeds type="array">
<feed>
<created-at type="dateTime">2014-02-26T02:28:01Z</created-at>
<entry-id type="integer">11888</entry-id>
<status>@cheerlights green</status>
<id type="integer" nil="true"/>
</feed>
<feed>
<created-at type="dateTime">2014-02-26T22:05:31Z</created-at>
<entry-id type="integer">11889</entry-id>
<status>@cheerlights blue</status>
<id type="integer" nil="true"/>
</feed>
</feeds>
</channel>
https://127.0.0.1:3000/channels/public.json.xml .
GET https://127.0.0.1:3000/channels/public.json.xml
{
"pagination":
{
"current_page": 1,
"per_page": 15,
"total_entries": 653
},
"channels":
[
{
"id": 9,
"name": "my_house",
"description": "Netduino Plus connected to sensors around the house",
"latitude": "40.44",
"longitude": "-79.996",
"created_at": "2010-12-13T20:20:06-05:00",
"elevation": "",
"last_entry_id": 6062691,
"ranking" :100,
"username":"hans",
"tags":
[
{
"id": 9,
"name": "temp"
},{
"id": 25,
"name": "light"
}
]
},
{
"id": 5683,
"name": "Residential Data Points",
"description": "Arduino Uno + Ethernet Shield",
"latitude": "35.664548",
"longitude": "-78.654972",
"created_at": "2013-05-15T12:33:57-04:00",
"elevation": "100",
"last_entry_id": 731713,
"ranking": 100,
"username": "samlro",
"tags":
[
{
"id": 950,
"name": "Analog Inputs"
}
]
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<response>
<pagination>
<current-page type="WillPaginate::PageNumber">1</current-page>
<per-page type="integer">15</per-page>
<total-entries type="integer">654</total-entries>
</pagination>
<channels type="array">
<channel>
<id type="integer">9</id>
<name>my_house</name>
<description>
Netduino Plus connected to sensors around the house
</description>
<latitude type="decimal">40.44</latitude>
<longitude type="decimal">-79.996</longitude>
<created-at type="dateTime">2010-12-13T20:20:06-05:00</created-at>
<elevation/>
<last-entry-id type="integer">6062720</last-entry-id>
<ranking type="integer">100</ranking>
<username>hans</username>
<tags type="array">
<tag>
<id type="integer">9</id>
<name>temp</name>
</tag>
<tag>
<id type="integer">25</id>
<name>light</name>
</tag>
</tags>
</channel>
<channel>
<id type="integer">5683</id>
<name>Residential Data Points</name>
<description>Arduino Uno + Ethernet Shield</description>
<latitude type="decimal">35.664548</latitude>
<longitude type="decimal">-78.654972</longitude>
<created-at type="dateTime">2013-05-15T12:33:57-04:00</created-at>
<elevation>100</elevation>
<last-entry-id type="integer">731720</last-entry-id>
<ranking type="integer">100</ranking>
<username>samlro</username>
<tags type="array">
<tag>
<id type="integer">950</id>
<name>Analog Inputs</name>
</tag>
</tags>
</channel>
</channels>
</response>
https://127.0.0.1:3000/channels.json.xml .
GET https://127.0.0.1:3000/channels.json.xml
[
{
"id": 9,
"name": "my_house",
"description": "Netduino Plus connected to sensors around the house",
"latitude": "40.44",
"longitude": "-79.996",
"created_at": "2010-12-13T20:20:06-05:00",
"elevation": "",
"last_entry_id": 6062691,
"ranking" :100,
"username":"hans",
"tags": [],
"api_keys":
[
{
"api_key": "XXXXXXXXXXXXXXXX",
"write_flag": true
}
]
},
{
"id": 5683,
"name": "Residential Data Points",
"description": "Connected Arduino",
"latitude": "32.664548",
"longitude": "-73.654972",
"created_at": "2013-05-15T12:33:57-04:00",
"elevation": "100",
"last_entry_id": 731713,
"ranking": 100,
"username": "hans",
"tags": [],
"api_keys":
[
{
"api_key": "XXXXXXXXXXXXXXXX",
"write_flag": true
}
]
}
]
<?xml version="1.0" encoding="UTF-8"?>
<channels type="array">
<channel>
<id type="integer">9</id>
<name>my_house</name>
<description>
Netduino Plus connected to sensors around the house
</description>
<latitude type="decimal">40.44</latitude>
<longitude type="decimal">-79.996</longitude>
<created-at type="dateTime">2010-12-13T20:20:06-05:00</created-at>
<elevation/>
<last-entry-id type="integer">6062720</last-entry-id>
<ranking type="integer">100</ranking>
<username>hans</username>
<tags type="array" />
<api-keys type="array">
<api-key>
<api-key>XXXXXXXXXXXXXXXX</api-key>
<write-flag type="boolean">true</write-flag>
</api-key>
</api-keys>
</channel>
<channel>
<id type="integer">5683</id>
<name>Residential Data Points</name>
<description>Connected Arduino</description>
<latitude type="decimal">32.664548</latitude>
<longitude type="decimal">-73.654972</longitude>
<created-at type="dateTime">2013-05-15T12:33:57-04:00</created-at>
<elevation>100</elevation>
<last-entry-id type="integer">731720</last-entry-id>
<ranking type="integer">100</ranking>
<username>hans</username>
<tags type="array" />
<api-keys type="array">
<api-key>
<api-key>XXXXXXXXXXXXXXXX</api-key>
<write-flag type="boolean">true</write-flag>
</api-key>
</api-keys>
</channel>
</channels>
https://127.0.0.1:3000/channels/CHANNEL_ID.json.xml .
GET https://127.0.0.1:3000/channels/1417.json.xml
{
"id": 4,
"name": "My New Channel",
"description": null,
"metadata": null,
"latitude": null,
"longitude": null,
"created_at": "2014-03-25T13:12:50-04:00",
"elevation": null,
"last_entry_id": null,
"ranking": 15,
"username": "hans",
"tags": []
}
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<id type="integer">4</id>
<name>My New Channel</name>
<description nil="true" />
<metadata nil="true" />
<latitude type="decimal" nil="true" />
<longitude type="decimal" nil="true" />
<created-at type="dateTime">2014-03-25T20:17:44-04:00</created-at>
<elevation nil="true" />
<last-entry-id type="integer" nil="true" />
<ranking type="integer">15</ranking>
<username>hans</username>
<tags type="array" />
</channel>
https://127.0.0.1:3000/channels.json.xml .
POST https://127.0.0.1:3000/channels.json.xml api_key=XXXXXXXXXXXXXXXX name=My New Channel
{
"id": 4,
"name": "My New Channel",
"description": null,
"metadata": null,
"latitude": null,
"longitude": null,
"created_at": "2014-03-25T13:12:50-04:00",
"elevation": null,
"last_entry_id": null,
"ranking": 15,
"username": "hans",
"tags": [],
"api_keys":
[
{
"api_key": "XXXXXXXXXXXXXXXX",
"write_flag": true
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<id type="integer">4</id>
<name>My New Channel</name>
<description nil="true" />
<metadata nil="true" />
<latitude type="decimal" nil="true" />
<longitude type="decimal" nil="true" />
<created-at type="dateTime">2014-03-25T20:17:44-04:00</created-at>
<elevation nil="true" />
<last-entry-id type="integer" nil="true" />
<ranking type="integer">15</ranking>
<username>hans</username>
<tags type="array" />
<api-keys type="array">
<api-key>
<api-key>XXXXXXXXXXXXXXXX</api-key>
<write-flag type="boolean">true</write-flag>
</api-key>
</api-keys>
</channel>
https://127.0.0.1:3000/channels/CHANNEL_ID.json.xml .
PUT https://127.0.0.1:3000/channels/4.json.xml api_key=XXXXXXXXXXXXXXXX name=Updated Channel
{
"id": 4,
"name": "Updated Channel",
"description": null,
"metadata": null,
"latitude": null,
"longitude": null,
"created_at": "2014-03-25T13:12:50-04:00",
"elevation": null,
"last_entry_id": null,
"ranking": 15,
"username": "hans",
"tags": [],
"api_keys":
[
{
"api_key": "XXXXXXXXXXXXXXXX",
"write_flag": true
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<id type="integer">4</id>
<name>Updated Channel</name>
<description nil="true" />
<metadata nil="true" />
<latitude type="decimal" nil="true" />
<longitude type="decimal" nil="true" />
<created-at type="dateTime">2014-03-25T20:17:44-04:00</created-at>
<elevation nil="true" />
<last-entry-id type="integer" nil="true" />
<ranking type="integer">15</ranking>
<username>hans</username>
<tags type="array" />
<api-keys type="array">
<api-key>
<api-key>XXXXXXXXXXXXXXXX</api-key>
<write-flag type="boolean">true</write-flag>
</api-key>
</api-keys>
</channel>
https://127.0.0.1:3000/channels/CHANNEL_ID/feeds.json.xml .
DELETE https://127.0.0.1:3000/channels/4/feeds.json.xml api_key=XXXXXXXXXXXXXXXX
[]
<?xml version="1.0" encoding="UTF-8"?> <nil-classes type="array" />
https://127.0.0.1:3000/channels/CHANNEL_ID.json.xml ,
replacing CHANNEL_ID with the ID of your Channel.
DELETE https://127.0.0.1:3000/channels/4.json.xml api_key=XXXXXXXXXXXXXXXX
{
"id": 4,
"name": "My New Channel",
"description": null,
"latitude": null,
"longitude": null,
"created_at": "2014-03-25T13:12:50-04:00",
"elevation": null,
"last_entry_id": null,
"ranking": 15,
"username": "hans",
"tags": []
}
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<id type="integer">4</id>
<name>My New Channel</name>
<description nil="true" />
<latitude type="decimal" nil="true" />
<longitude type="decimal" nil="true" />
<created-at type="dateTime">2014-03-25T20:17:44-04:00</created-at>
<elevation nil="true" />
<last-entry-id type="integer" nil="true" />
<ranking type="integer">15</ranking>
<username>hans</username>
<tags type="array" />
</channel>
Using the ThingSpeak Importer, you are able to import data from a CSV file directly into a ThingSpeak Channel. The access the Importer, select a Channel, and click Import Data.
The format for the CSV should be the following:
datetime,field1,field2,field3,field4,field5,field6,field7,field8,latitude,longitude,elevation,status
Here is an example CSV file: Sample CSV File
You only have to send a datetime stamp and at least one field. The datetime stamp can be in many formats such as epoch, ISO 8601, or MySQL time. If the datetime includes a GMT/UTC offset, we will use that to properly import the data. If your datetime stamps do not have a GMT / UTC offset, you can specify a time zone that the data was logged in.