How our API responses are structured
Always include your token as a parameter when making requests.
Base Url:
https://api.groupme.com/v3
Example posting JSON data:
$ curl -X POST -H "Content-Type: application/json" -d '{"name": "Family"}' https://api.groupme.com/v3/groups?token=YOUR_ACCESS_TOKEN
Example JSON response envelope ("response" key omitted in Responses for brevity):
HTTP/1.1 201 { "response": { "id": "12345", "name": "Family" //... } } }
Example JSON errors envelope:
HTTP/1.1 400 { meta: { "code": 400, "errors": ["Name is required"] }, response: null }
List the authenticated user's active groups.
The response is paginated, with a default of 10 groups per page.
Please consider using of omit=memberships parameter. Not including member lists might significantly improve user experience of your app for users who are participating in huge groups.
GET /groups
Status: 200 OK
[ { "id": "1234567890", "name": "Family", "type": "private", "description": "Coolest Family Ever", "image_url": "https://i.groupme.com/123456789", "creator_user_id": "1234567890", "created_at": 1302623328, "updated_at": 1302623328, "members": [ { "user_id": "1234567890", "nickname": "Jane", "muted": false, "image_url": "https://i.groupme.com/123456789" } ], "share_url": "https://groupme.com/join_group/1234567890/SHARE_TOKEN", "messages": { "count": 100, "last_message_id": "1234567890", "last_message_created_at": 1302623328, "preview": { "nickname": "Jane", "text": "Hello world", "image_url": "https://i.groupme.com/123456789", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } } } ]
List they groups you have left but can rejoin.
GET /groups/former
Status: 200 OK
[ { "id": "1234567890", "name": "Family", "type": "private", "description": "Coolest Family Ever", "image_url": "https://i.groupme.com/123456789", "creator_user_id": "1234567890", "created_at": 1302623328, "updated_at": 1302623328, "members": [ { "user_id": "1234567890", "nickname": "Jane", "muted": false, "image_url": "https://i.groupme.com/123456789" } ], "share_url": "https://groupme.com/join_group/1234567890/SHARE_TOKEN", "messages": { "count": 100, "last_message_id": "1234567890", "last_message_created_at": 1302623328, "preview": { "nickname": "Jane", "text": "Hello world", "image_url": "https://i.groupme.com/123456789", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } } } ]
Load a specific group.
GET /groups/:id
Status: 200 OK
{ "id": "1234567890", "name": "Family", "type": "private", "description": "Coolest Family Ever", "image_url": "https://i.groupme.com/123456789", "creator_user_id": "1234567890", "created_at": 1302623328, "updated_at": 1302623328, "members": [ { "user_id": "1234567890", "nickname": "Jane", "muted": false, "image_url": "https://i.groupme.com/123456789" } ], "share_url": "https://groupme.com/join_group/1234567890/SHARE_TOKEN", "messages": { "count": 100, "last_message_id": "1234567890", "last_message_created_at": 1302623328, "preview": { "nickname": "Jane", "text": "Hello world", "image_url": "https://i.groupme.com/123456789", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } } }
Create a new group
POST /groups
{ "name": "Family", "share": true, "image_url": "https://i.groupme.com/123456789" }
share
, we'll generate a share URL. Anybody with this URL can join the group.
Status: 201 Created
{ "id": "1234567890", "name": "Family", "type": "private", "description": "Coolest Family Ever", "image_url": "https://i.groupme.com/123456789", "creator_user_id": "1234567890", "created_at": 1302623328, "updated_at": 1302623328, "members": [ { "user_id": "1234567890", "nickname": "Jane", "muted": false, "image_url": "https://i.groupme.com/123456789" } ], "share_url": "https://groupme.com/join_group/1234567890/SHARE_TOKEN", "messages": { "count": 100, "last_message_id": "1234567890", "last_message_created_at": 1302623328, "preview": { "nickname": "Jane", "text": "Hello world", "image_url": "https://i.groupme.com/123456789", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } } }
Update a group after creation
POST /groups/:id/update
{ "name": "Family", "share": true, "image_url": "https://i.groupme.com/123456789", "office_mode": true }
share
, we'll generate a share URL. Anybody with this URL can join the group.
Status: 200 OK
{ "id": "1234567890", "name": "Family", "type": "private", "description": "Coolest Family Ever", "image_url": "https://i.groupme.com/123456789", "creator_user_id": "1234567890", "created_at": 1302623328, "updated_at": 1302623328, "members": [ { "user_id": "1234567890", "nickname": "Jane", "muted": false, "image_url": "https://i.groupme.com/123456789" } ], "share_url": "https://groupme.com/join_group/1234567890/SHARE_TOKEN", "messages": { "count": 100, "last_message_id": "1234567890", "last_message_created_at": 1302623328, "preview": { "nickname": "Jane", "text": "Hello world", "image_url": "https://i.groupme.com/123456789", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } } }
Disband a group
This action is only available to the group creator
POST /groups/:id/destroy
Status: 200 OK
Join a shared group
POST /groups/:id/join/:share_token
Status: 200 OK
{ "group": { "id": "1234567890", "name": "Family", "type": "private", "description": "Coolest Family Ever", "image_url": "https://i.groupme.com/123456789", "creator_user_id": "1234567890", "created_at": 1302623328, "updated_at": 1302623328, "members": [ { "user_id": "1234567890", "nickname": "Jane", "muted": false, "image_url": "https://i.groupme.com/123456789" } ], "share_url": "https://groupme.com/join_group/1234567890/SHARE_TOKEN", "messages": { "count": 100, "last_message_id": "1234567890", "last_message_created_at": 1302623328, "preview": { "nickname": "Jane", "text": "Hello world", "image_url": "https://i.groupme.com/123456789", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } } } }
Rejoin a group. Only works if you previously removed yourself.
POST /groups/join
Status: 200 OK
{ "id": "1234567890", "name": "Family", "type": "private", "description": "Coolest Family Ever", "image_url": "https://i.groupme.com/123456789", "creator_user_id": "1234567890", "created_at": 1302623328, "updated_at": 1302623328, "members": [ { "user_id": "1234567890", "nickname": "Jane", "muted": false, "image_url": "https://i.groupme.com/123456789" } ], "share_url": "https://groupme.com/join_group/1234567890/SHARE_TOKEN", "messages": { "count": 100, "last_message_id": "1234567890", "last_message_created_at": 1302623328, "preview": { "nickname": "Jane", "text": "Hello world", "image_url": "https://i.groupme.com/123456789", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } } }
Change owner of requested groups.
This action is only available to the group creator.
Response is array of result objects which contain status
field - the result of change owner action for every request:
POST /groups/change_owners
user_id
is the new owner who must be active member of a group specified by group_id
.
Status: 200 OK
{ "results": [ { "group_id": "1234567890", "owner_id": "1234567890", "status": "200" }, { "group_id": "1234567890", "owner_id": "1234567890", "status": "400" } ] }
Status: 400 Bad Request
'requests' field missing in request body
Add members to a group.
Multiple members can be added in a single request, and results are
fetched with a separate call (since
memberships are processed asynchronously). The response includes a
results_id
that's used in the results request.
In order to correlate request params with resulting memberships, GUIDs can be added to the members parameters. These GUIDs will be reflected in the membership JSON objects.
POST /groups/:group_id/members/add
{ "members": [ { "nickname": "Mom", "user_id": "1234567890", "guid": "GUID-1" }, { "nickname": "Dad", "phone_number": "+1 2123001234", "guid": "GUID-2" }, { "nickname": "Jane", "email": "jane@example.com", "guid": "GUID-3" } ] }
nickname
is required. You must use one of the following identifiers: user_id
, phone_number
, or email
.
Status: 202 Accepted
{ "results_id": "GUID" }
Get the membership results from an add call.
Successfully created memberships will be returned, including any GUIDs that were sent up in the add request. If GUIDs were absent, they are filled in automatically. Failed memberships and invites are omitted.
Keep in mind that results are temporary -- they will only be available for 1 hour after the add request.
GET /groups/:group_id/members/results/:results_id
Status: 200 OK
{ "members": [ { "id": "1000", "user_id": "10000", "nickname": "John", "muted": false, "image_url": "https://i.groupme.com/AVATAR", "autokicked": false, "app_installed": true, "guid": "GUID-1" }, { "id": "2000", "user_id": "20000", "nickname": "Anne", "muted": false, "image_url": "https://i.groupme.com/AVATAR", "autokicked": false, "app_installed": true, "guid": "GUID-2" } ] }
Status: 503 Service Unavailable
Results aren't ready. Try again in a little bit.
Status: 404 Not Found
Results are no longer available. Don't try again.
Remove a member (or yourself) from a group.
Note: The creator of the group cannot be removed or exit.
POST /groups/:group_id/members/:membership_id/remove
members
key in the group JSON, this is the
id
value, not the user_id
.
Status: 200 OK
Update your nickname in a group. The nickname must be between 1 and 50 characters.
POST /groups/:group_id/memberships/update
{ "membership": { "nickname": "NEW NICKNAME" } }
Status: 200 OK
{ "id": "MEMBERSHIP ID", "user_id": "USER ID", "nickname": "NEW NICKNAME", "muted": false, "image_url": "AVATAR URL", "autokicked": false, "app_installed": true }
Retrieve messages for a group.
By default, messages are returned in groups of 20, ordered by
created_at
descending. This can be raised or lowered
by passing a limit
parameter, up to a maximum of 100
messages.
Messages can be scanned by providing a message ID as either the
before_id
, since_id
, or
after_id
parameter. If before_id
is
provided, then messages immediately preceding the given
message will be returned, in descending order. This can be used
to continually page back through a group's messages.
The after_id
parameter will return messages that
immediately follow a given message, this time in
ascending order (which makes it easy to pick off the
last result for continued pagination).
Finally, the since_id
parameter also returns
messages created after the given message, but it retrieves the
most recent messages. For example, if more than twenty
messages are created after the since_id
message,
using this parameter will omit the messages that immediately
follow the given message. This is a bit counterintuitive, so take
care.
If no messages are found (e.g. when filtering with
before_id
) we return code 304
.
Note that for historical reasons, likes are returned as an array
of user ids in the favorited_by
key.
GET /groups/:group_id/messages
Status: 200 OK
{ "count": 123, "messages": [ { "id": "1234567890", "source_guid": "GUID", "created_at": 1302623328, "user_id": "1234567890", "group_id": "1234567890", "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "system": true, "favorited_by": [ "101", "66", "1234567890" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } ] }
Send a message to a group
If you want to attach an image, you must first process it through our image service.
Attachments of type emoji
rely on data from emoji PowerUps.
Clients use a placeholder
character in the message text
and specify a replacement charmap
to substitute emoji characters
The character map is an array of arrays containing rune data ([[{pack_id,offset}],...]
).
The placeholder
should be a high-point/invisible UTF-8 character.
POST /groups/:group_id/messages
{ "message": { "source_guid": "GUID", "text": "Hello world ☃☃", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } }
source_guid
within one minute of each other, the second message will fail with a
409 Conflict
response. So it's important to set this to a
unique value for each message.
attachment
is present. The maximum length is 1,000 characters.
Status: 201 Created
{ "message": { "id": "1234567890", "source_guid": "GUID", "created_at": 1302623328, "user_id": "1234567890", "group_id": "1234567890", "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "system": true, "favorited_by": [ "101", "66", "1234567890" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } }
Returns a paginated list of direct message chats, or conversations, sorted by updated_at
descending.
GET /chats
Status: 200 OK
[ { "created_at": 1352299338, "updated_at": 1352299338, "last_message": { "attachments": [ ], "avatar_url": "https://i.groupme.com/200x200.jpeg.abcdef", "conversation_id": "12345+67890", "created_at": 1352299338, "favorited_by": [ ], "id": "1234567890", "name": "John Doe", "recipient_id": "67890", "sender_id": "12345", "sender_type": "user", "source_guid": "GUID", "text": "Hello world", "user_id": "12345" }, "messages_count": 10, "other_user": { "avatar_url": "https://i.groupme.com/200x200.jpeg.abcdef", "id": 12345, "name": "John Doe" } } ]
Fetch direct messages between two users.
DMs are returned in groups of 20, ordered by created_at
descending.
If no messages are found (e.g. when filtering with since_id
) we return code 304
.
Note that for historical reasons, likes are returned as an array of user ids in the favorited_by
key.
GET /direct_messages
Status: 200 OK
{ "count": 123, "direct_messages": [ { "id": "1234567890", "source_guid": "GUID", "recipient_id": "20", "user_id": "1234567890", "created_at": 1302623328, "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "favorited_by": [ "101" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } ] }
Send a DM to another user
If you want to attach an image, you must first process it through our image service.
Attachments of type emoji
rely on data from emoji PowerUps.
Clients use a placeholder
character in the message text
and specify a replacement charmap
to substitute emoji characters
The character map is an array of arrays containing rune data ([[{pack_id,offset}],...]
).
POST /direct_messages
{ "direct_message": { "source_guid": "GUID", "recipient_id": "20", "text": "Hello world ☃☃", "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } }
attachment
is present.
Status: 201 Created
{ "message": { "id": "1234567890", "source_guid": "GUID", "recipient_id": "20", "user_id": "1234567890", "created_at": 1302623328, "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "favorited_by": [ "101" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } }
Status: 403 Forbidden
User has been auto-banned for sending too many messages.
Status: 400 Bad Request
There's a problem with the parameters. Check errors.
Like a message.
POST /messages/:conversation_id/:message_id/like
Status: 200 OK
Unlike a message.
POST /messages/:conversation_id/:message_id/unlike
Status: 200 OK
A list of the liked messages in the group for a given period of time. Messages are ranked in order of number of likes.
GET /groups/:group_id/likes?period=<day|week|month>
Status: 200 OK
{ "messages": [ { "id": "1234567890", "source_guid": "GUID", "created_at": 1302623328, "user_id": "1234567890", "group_id": "1234567890", "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "system": true, "favorited_by": [ "101", "66", "1234567890" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] }, { "id": "1234567890", "source_guid": "GUID", "created_at": 1302623328, "user_id": "1234567890", "group_id": "1234567890", "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "system": true, "favorited_by": [ "1", "2" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } ] }
A list of messages you have liked. Messages are returned in reverse chrono-order. Note that the payload includes a liked_at timestamp in ISO-8601 format.
GET /groups/:group_id/likes/mine
Status: 200 OK
{ "messages": [ { "id": "1234567890", "source_guid": "GUID", "created_at": 1302623328, "user_id": "1234567890", "group_id": "1234567890", "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "system": true, "favorited_by": [ "101", "66", "1234567890" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ], "liked_at": "2014-05-08T18:30:31.6617Z" } ] }
A list of messages others have liked.
GET /groups/:group_id/likes/for_me
Status: 200 OK
{ "messages": [ { "id": "1234567890", "source_guid": "GUID", "created_at": 1302623328, "user_id": "1234567890", "group_id": "1234567890", "name": "John", "avatar_url": "https://i.groupme.com/123456789", "text": "Hello world ☃☃", "system": true, "favorited_by": [ "101", "66", "1234567890" ], "attachments": [ { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "image", "url": "https://i.groupme.com/123456789" }, { "type": "location", "lat": "40.738206", "lng": "-73.993285", "name": "GroupMe HQ" }, { "type": "split", "token": "SPLIT_TOKEN" }, { "type": "emoji", "placeholder": "☃", "charmap": [ [ 1, 42 ], [ 2, 34 ] ] } ] } ] }
Create a bot. See our Bots Tutorial for a full walkthrough.
POST /bots
Status: 201 Created
{ "bot_id": "1234567890", "group_id": "1234567890", "name": "hal9000", "avatar_url": "https://i.groupme.com/123456789", "callback_url": "https://example.com/bots/callback", "dm_notification": false, "active": true }
Post a message from a bot
POST /bots/post
Status: 201 Created
List bots that you have created
GET /bots
Status: 200 OK
[ { "bot_id": "1234567890", "group_id": "1234567890", "name": "hal9000", "avatar_url": "https://i.groupme.com/123456789", "callback_url": "https://example.com/bots/callback", "dm_notification": false, "active": true } ]
Remove a bot that you have created
POST /bots/destroy
Status: 200 OK
Get details about the authenticated user
GET /users/me
Status: 200 OK
{ "id": "1234567890", "phone_number": "+1 2123001234", "image_url": "https://i.groupme.com/123456789", "name": "Ronald Swanson", "created_at": 1302623328, "updated_at": 1302623328, "email": "me@example.com", "sms": false }
Update attributes about your own account
POST /users/update
{ "avatar_url": "https://4.bp.blogspot.com/-GAeMYT8SZoI/TtBTK209xMI/AAAAAAAAWts/5nmvpmmvoWo/s1600/TopGun_059Pyxurz.jpg", "name": "Tom Skerritt", "email": "viper@topgun.usaf.mil", "zip_code": "92145" }
Status: 200 OK
{ "id": "1234567890", "phone_number": "+1 2123001234", "image_url": "https://i.groupme.com/123456789", "name": "Ronald Swanson", "created_at": 1302623328, "updated_at": 1302623328, "email": "me@example.com", "sms": false }
Enables SMS mode for N hours, where N is at most 48. After N hours have elapsed, user will receive push notfications.
POST /users/sms_mode
{ "duration": 4, "registration_id": "TOKEN" }
Status: 201 Created
Disables SMS mode
POST /users/sms_mode/delete
Status: 200 OK
A list of contacts you have blocked. These people cannot DM you.
GET /blocks?user=<your user id>
Status: 200 OK
{ "blocks": [ { "user_id": "1234567890", "blocked_user_id": "1234567890", "created_at": 1302623328 } ] }
Asks if a block exists between you and another user id
GET /blocks/between?user=<you>&otherUser=<other user>
Status: 200 OK
{ "between": true }
Creates a block between you and the contact
POST /blocks?user=<you>&otherUser=<other user>
Status: 201 Created
{ "block": { "user_id": "1234567890", "blocked_user_id": "1234567890", "created_at": 1302623328 } }
Removes block between you and other user
DELETE /blocks?user=<you>&otherUser=<other user>
Status: 200 OK
Removes block between you and other user
POST /blocks/delete?user=<you>&otherUser=<other user>
Status: 200 OK