---
# System prepended metadata

title: Zipwhip

---

# Zipwhip

Zipwhip's API relies on a sessionKey to perform all actions. This is a GUID representation of an authenticated user.
>Tip: SessionKeys do not expire, they can be obtained once and then used for all future actions.

A sessionKey is obtained from perfomring a `user/login` webcall for the account.

### It all begins with user/login
``` Sh
$ curl -i https://api.zipwhip.com/user/login \
	-d username=[phone number] \
	-d password=[account password]
```
```json
{
  "success":true,
  "response":"3d0f1dde-aaff-4ce8-b61a-af212a860abc:123456789"
}
```


**I think we will have a couple issues related to autoscaling.
Eache instance will make request for getting session key, but I am not sure that previous key won't be canceled. To be sure we need to get credentials for having posibility two test webhooks**



>In this case the `response` is the sessionKey for the account.

Next you'll want to send a message. To do so, we will use the the sessionKey retrieved from `user/login`.
```sh
$ curl -i https://api.zipwhip.com/message/send \
	-d session=3d0f1dde-aaff-4ce8-b61a-af212a860abc:123456789
	-d --data-rulencode contacts='+18559479447'
	-d --data-urlencode body='Hello World, from Zipwhip!'
```
```json
{
  "response": {
    "fingerprint": "4236521183",
    "root": "327559093363723008",
    "tokens": [
      {
        "contact": 1989548603,
        "device": 309626613,
        "fingerprint": "42336654183",
        "message": "327545678963723008"
      }
    ]
  },
  "success": true
}
```
>`message` is the ID of the unique this can be used in `message/get`, `message/read`, `message/delete`


## Adding Web Hooks
Install a Web Hook onto the text-enabled phone number. When an event occurs the details of the message will be delivered to the URL specified.

### Parameters
|Parameter|Required|Description
|:---------|:--------|:----------
|session|True|Session is the response of user/login.
|type|True|For now, the available options is 'message'
|event|True|Events listed above. i.e. send, receive, etc.
|url|True|The destination when the event fires.
|method|False|HTTP Method used for Web Hook. i.e. POST, PUT, GET

### Example Request
```sh
$ curl -X POST https://api.zipwhip.com/webhook/add \
       -d session=[sessionKey] \
       -d type=message \
       -d event=receive \
       -d url=https://test.zipwhip.com/message/receive \
       -d method=POST
```

### Example Response
```JSON
{
	"success": true,
	"response": [
		{
			"webhookId": 687557714,
			"type": "message",
			"event": "receive",
			"url": "https://test.zipwhip.com/message/receive",
			"method": "POST"
		}
	]
}
```



# Zipwhip CODE PART

### record in a platform collection
```
{
	"name" : "Zipwhip",
	"platformId" : 9,
	"reportColor" : "#ffffff",   ???
	"systemName" : "zipWhip",  
	"endSessionMessage" : "Your session with {{agentName}} has ended.",
	"userApp" : {
		"name" : "Zipwhip"
	}
}
```

### zipWhip_configurations
```
{
    "zipWhipConfigurationId": Number,
    "name": String,
    "phoneNumber": String
    "password": String
    
}
```

**We use phoneNumber + password for getting sessionKey which we use in all our queries**

### zipWhip_Bots
```
{
    "zipWhipBotId": Number,
    "botId": Number,
    "name": "String",
    "zipWhipConfigurationId": Number
     "name": String
    
}
```