This document contains all the resources you need to start developing applications on top of the Streak platform.
The Streak API endpoint is https://www.streak.com/api/v1 and all paths below are relative to that. Streak uses HTTP Basic Auth for authentication and all calls must be over HTTPS.
| URL | Verb | Functionality |
|---|---|---|
/users/me | GET | Get Current User |
/users/{userKey} | GET | Get User |
| URL | Verb | Functionality |
|---|---|---|
/pipelines | GET | List All Pipelines |
/pipelines/{pipelineKey} | GET | Get a specific Pipeline |
/pipelines | PUT | Create a Pipeline |
/pipelines/{pipelineKey} | DELETE | Delete a Pipeline |
/pipelines/{pipelineKey} | POST | Edit a Pipeline |
| URL | Verb | Functionality |
|---|---|---|
/boxes | GET | List All Boxes a user has access to |
/pipelines/{pipelineKey}/boxes | GET | List All Boxes in Pipeline |
/boxes/{boxKey} | GET | Get a specific Box |
/pipelines/{pipelineKey/boxes} | PUT | Create a Box |
/boxes/{boxKey} | DELETE | Delete a Box |
/boxes/{boxKey} | POST | Edit a Box |
| URL | Verb | Functionality |
|---|---|---|
/pipelines/{pipelineKey}/stages | GET | List All Stages in Pipeline |
/pipelines/{pipelineKey}/stages/{stageKey} | GET | Get a Specific Stage in Pipeline |
/pipelines/{pipelineKey}/stages | PUT | Create a Stage in Pipeline |
/pipelines/{pipelineKey}/stages/{stageKey} | DELETE | Delete a Specific Stage in Pipeline |
/pipelines/{pipelineKey}/stages/{stageKey} | POST | Edit a Specific Stage in Pipeline |
| URL | Verb | Functionality |
|---|---|---|
/pipelines/{pipelineKey}/fields | GET | List All Fields in Pipeline |
/pipelines/{pipelineKey}/fields/{fieldKey} | GET | Get Specific Field in Pipeline |
/pipelines/{pipelineKey}/fields | PUT | Create Field in Pipeline |
/pipelines/{pipelineKey}/fields/{fieldKey} | DELETE | Delete Field in Pipeline |
/pipelines/{pipelineKey}/fields/{fieldKey} | POST | Edit Field in Pipeline |
/boxes/{boxKey}/fields | GET | List Field Values for Box |
/boxes/{boxKey}/fields/{fieldKey} | GET | Get Specific Field Value for Box |
/boxes/{boxKey}/fields/{fieldKey} | POST | Edit Field Value for Box |
| URL | Verb | Functionality |
|---|---|---|
/boxes/{boxKey}/reminders | GET | Get Reminders for Box |
/reminders/{reminderKey} | GET | Get Specific Reminder |
/boxes/{boxKey}/reminders | PUT | Create Reminder |
/reminders/{reminderKey} | DELETE | Delete a Reminder |
/reminders/{reminderKey} | POST | Edit a Reminder |
| URL | Verb | Functionality |
|---|---|---|
/boxes/{boxKey}/files | GET | Get Files for Box |
/files/{fileKey} | GET | Get Specific File |
/files/{fileKey}/contents | GET | Get File Contents |
/files/{fileKey}/link | GET | Get a Link to a File |
| URL | Verb | Functionality |
|---|---|---|
/boxes/{boxKey}/threads | GET | Get Gmail Threads for Box |
/threads/{threadKey} | GET | Get Specific Gmail Thread |
| URL | Verb | Functionality |
|---|---|---|
/search | GET | Search for Boxes/Pipelines |
| URL | Verb | Functionality |
|---|---|---|
/pipelines/{pipelineKey}/newsfeed | GET | Get Newsfeed for Pipeline |
/boxes/{boxKey}/newsfeed | GET | Get Newsfeed for Box |
The Streak API is tied to your Streak account. Simply login into Gmail and make sure Streak is enabled. Click on the Streak dropdown in the top navigation bar of Gmail and find the "Developer Zone" link.

This will open a dialog where you can view your current API key, delete it or create a new one. Treat your API Key like a password as it has full access to your account. If you feel it has been compromised, you can always regenerate a new one from the dialog.

You authenticate with the Streak API using your API key. Each request to the Streak API must include your API key.
Your API key has all the same privileges that you have while accessing Streak. Any pipelines you have access to in your Streak Gmail account will also be available from the API. Be sure to keep your API key secret and remember you can always regenerate your key if needed.
Streak uses HTTP Basic Auth to sign each request with your API key. Simply set the username of the request to the API key. The password field is ignored. All requests must be made over HTTPS as HTTP requests will be ignored.
Here's a sample request:
curl https://www.streak.com/api/v1/pipelines -u YOUR_API_KEY:
The Streak API supports typical CRUD operations and uses the http method of the request to determine which operation is being performed. Typically, a GET request will just return the object(s) specified, a PUT will create an entity, a DELETE will delete an entity and a POST will update an entity. All POST requests should set the Content-Type header to application/json and set the post data to a valid JSON object.
The Streak API always returns a JSON object with the Content-Type set to application/json. If the request was successful the requested object is returned. If the call encountered an error, a JSON object is returned with details about the error.
Requests typically return the resource specified by the URL. For example, a POST to a pipeline resource, updates that pipeline with new data and then returns that resource as the response. GET and PUT behave similarily. DELETE returns a JSON object with a single boolean success field.
Unless otherwise noted, all date properties in returned JSON is specified in milliseconds since epoch (Jan 1, 1970).
If a call to the Streak API causes an error, the most appropriate HTTP status code is set in the response and a JSON object is returned with details about the error. HTTP status codes in the 200's mean a successful call to the API, status codes in the 400's mean there was a problem with the the parameters in the API call and status codes in the 500's mean there was an issue with Streak servers. In any case, a JSON object is returned in the response. Below is a table of possible status codes:
| Status Code | Description |
|---|---|
200 | Success |
400 | Bad Request. This usually occurs when trying to access the API over http instead of https. |
401 | Unauthorized. Either the api key provided does not have access to the resource or the provided API key is invalid. |
404 | Not Found. The resource requested was not found. |
The most important object relationship in the Streak is that a Pipeline contains Boxes which contains Emails, Files, Reminders, etc. Users have access to multiple pipelines, either ones they create or those that are shared with them.
Each entity or object returned by the API has two key fields which are identical: the key field and a custom named key based on the entity type. I.e a box entity will have two key fields: key and boxKey. They are identical and you can use either.
Each Streak user has a corresponding user object. Creation of users is done when a user signs up for Streak and these objects can not be altered through the API. Since API keys are associated with the user, each API key only has priveledges to access its own user object.
| Property Name | Description |
|---|---|
email | The email address of the user |
lowercaseEmail | A lower case version of the users email address. Useful for normalization |
lastSeenTimestamp | The date the user last used into Streak |
isOauthComplete | Whether the user has completed the OAuth process. Useful to determine whether they can successully share emails |
displayName | A display friendly name, usually the users full name if it exists in their profile |
This call will give the current user (as defined by the API Key)
Example Request:curl https://www.streak.com/api/v1/users/me -u YOUR_API_KEY:
Example Response:
{
"email": "tesla@streak.com",
"lowercaseEmail": "tesla@streak.com",
"creationTimestamp": 1347660765134,
"lastUpdatedTimestamp": 1348463195997,
"lastSeenTimestamp": 1348470000000,
"isOauthComplete": true,
"userKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"displayName": "tesla@streak.com",
"key": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA"
}
This call will return the details for the user specified. Note, you are only permissted to request users who belong to the same domain as the user making the request.
Example Request:curl https://www.streak.com/api/v1/users/{userKey} -u YOUR_API_KEY:
Pipelines are a core data object in Streak. They represent a business process that a user or set of users would like managed. Pipelines are typically used for Sales, Hiring, Product Development, Bug Tracking, Project Management, Fundraising, Dealflow and others.
A pipeline defines the schema for the boxes it contains. It defines the set of stages that contained boxes can be in as well as the set of custom fields. A pipeline is created by a single user but can be shared to other users or to an entire organization.
Pipelines have several fields that describe the schema of the pipeline and hence describe the schema of any boxes contained within it.
can not be altered through the API. Since API keys are associated with the user, each API key only has priveledges to access its own user object.| Property Name | Description |
|---|---|
creatorKey | The user key of the user that created the pipeline |
name | The name of this pipeline |
description | A description of the purpose of this pipeline, displayed in the web UI. |
orgWide | Whether this pipeline is shared with all users in the organization (same domain in email address) |
fields | Describes what fields each box within the pipeline can have. This field is read-only. To modify, refer to the Fields endpoints |
stages | A map describing the set of possible stages a box within the pipeline can be in. Read-only and can only be modified using Stages endpoints |
stageOrder | Editable array which allows you to reorder the stages. This modifies the order of the stages that appear in the web UI |
aclEntries | An array of ACL objects (with properties: fullName, email, isOwner, image) which determines a list of users who have access to this pipeline |
owner | An object with the same properties as elements in the aclEntries array specifying the creator of this pipeline |
This call will give you access to all pipelines the user of this API key has access to.
The stages and fields properties are embedded in the pipeline object for convenience, however, to update these properties you must use the respective endpoints listed in the Stages and Fields sections.
curl https://www.streak.com/api/v1/pipelines -u YOUR_API_KEY:
Example Response:
[
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"name": "Hiring",
"description": "Use this pipeline to manage hiring potential candidates in your organization. Create a box for each candidate.",
"orgWide": false,
"fields": [
{
"name": "Assigned To",
"key": "1001",
"type": "PERSON"
},
{
"name": "Position",
"key": "1002",
"type": "TEXT_INPUT"
},
{
"name": "Start Date",
"key": "1003",
"type": "DATE"
}
],
"stages": {
"5002": {
"name": "Phone Screen",
"key": "5002"
},
"5001": {
"name": "Resume",
"key": "5001"
},
"5004": {
"name": "Internal Decision",
"key": "5004"
},
"5003": {
"name": "Interview",
"key": "5003"
},
"5007": {
"name": "Passed",
"key": "5007"
},
"5005": {
"name": "Offer Negotiation",
"key": "5005"
},
"5006": {
"name": "Hired",
"key": "5006"
}
},
"stageOrder": [
"5001",
"5002",
"5003",
"5004",
"5005",
"5006",
"5007"
],
"creationTimestamp": 1347993556572,
"lastUpdatedTimestamp": 1348342589349,
"aclEntries": [
{
"email": "aleem@streak.com",
"isOwner": false
}
],
"owner": {
"email": "tesla@streak.com",
"isOwner": true
},
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww",
"key": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww"
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"name": "Sales / CRM",
"description": "Use this pipeline to manage your sales process across your organization. Create a box for each customer.",
"orgWide": true,
"fields": [
{
"name": "Assigned To",
"key": "1001",
"type": "PERSON"
},
{
"name": "Deal Size",
"key": "1002",
"type": "TEXT_INPUT"
}
],
"stages": {
"5002": {
"name": "Contacted",
"key": "5002"
},
"5001": {
"name": "Lead",
"key": "5001"
},
"5004": {
"name": "Demo",
"key": "5004"
},
"5003": {
"name": "Pitched",
"key": "5003"
},
"5005": {
"name": "Negotiating",
"key": "5005"
},
"5006": {
"name": "Closed",
"key": "5006"
}
},
"stageOrder": [
"5001",
"5002",
"5003",
"5004",
"5005",
"5006"
],
"creationTimestamp": 1347993563027,
"lastUpdatedTimestamp": 1348342568733,
"aclEntries": [],
"owner": {
"email": "tesla@streak.com",
"isOwner": true
},
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"key": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww"
}
]
| Parameter | Description |
|---|---|
sortBy | What order to sort the pipelines by. There are two valid sorts creationTimestamp and lastUpdatedTimestamp. Both are in descending order. (optional) |
The aclEntries field specifies the indiviudal users, other than the owner, that this pipeline is shared with. Currently, sharing a pipeline to another user gives them full access to reading, writing and management of that pipeline. The orgWide field specifices whether this pipeline is shared with everyone inside the users organization. An organization is defined as users with the same google apps for your domain.
This call will give you a single pipeline given the key.
Example Request:curl https://www.streak.com/api/v1/pipelines/{pipelineKey} -u YOUR_API_KEY:
Example Response:
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"name": "Hiring",
"description": "Use this pipeline to manage hiring potential candidates in your organization. Create a box for each candidate.",
"orgWide": false,
"fields": [
{
"name": "Assigned To",
"key": "1001",
"type": "PERSON"
},
{
"name": "Position",
"key": "1002",
"type": "TEXT_INPUT"
},
{
"name": "Start Date",
"key": "1003",
"type": "DATE"
}
],
"stages": {
"5002": {
"name": "Phone Screen",
"key": "5002"
},
"5001": {
"name": "Resume",
"key": "5001"
},
"5004": {
"name": "Internal Decision",
"key": "5004"
},
"5003": {
"name": "Interview",
"key": "5003"
},
"5007": {
"name": "Passed",
"key": "5007"
},
"5005": {
"name": "Offer Negotiation",
"key": "5005"
},
"5006": {
"name": "Hired",
"key": "5006"
}
},
"stageOrder": [
"5001",
"5002",
"5003",
"5004",
"5005",
"5006",
"5007"
],
"creationTimestamp": 1347993556572,
"lastUpdatedTimestamp": 1347993573832,
"aclEntries": [],
"owner": {
"email": "tesla@streak.com",
"isOwner": true
},
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline want returned |
This call will give you a single pipeline given the key.
Example Request:curl -X PUT -d "name=Foo&description=Bar" https://www.streak.com/api/v1/pipelines -u YOUR_API_KEY:
Example Response:
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"name": "Foo",
"description": "Bar",
"orgWide": false,
"fields": [],
"stages": {},
"stageOrder": [],
"creationTimestamp": 1348417307038,
"lastUpdatedTimestamp": 1348417307038,
"aclEntries": [],
"owner": {
"email": "tesla@streak.com",
"isOwner": true
},
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYZAw",
"key": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYZAw"
}
| Parameter | Description |
|---|---|
name | The name of the pipeline you are creating |
description | The description of the pipeline that is visible when viewing the pipeline. |
orgWide | Whether the pipeline will be shared with all users in the organization (same domain in email address). (Optional) |
fieldNamesfieldTypes | The fields each box within the pipeline can have. Fields should be given as a comma-separated array of names and a comma-separated array of corresponding field types (of equal length). To modify after creation use the Field endpoint. (Convenience, Optional) |
stageNames | The possible stages a box within a pipeline can be in. Stages should be given as a comma-separated array of names. To modify after creation use the Stage endpoint. (Convenience, Optional) |
This call lets you delete a pipeline. All associated data of a pipeline (like boxes) will be deleted as well.
Example Request:curl -X DELETE https://www.streak.com/api/v1/pipelines/{pipelineKey} -u YOUR_API_KEY:
Example Response:
{
"success":true
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline to be deleted |
This call lets you edit the properties of a pipeline.
Example Request:curl -X POST \
-d "{name=NewName, description=NewDescription}" \
-u YOUR_API_KEY: \
-H "Content-Type:application/json" \
https://www.streak.com/api/v1/pipelines/{pipelineKey}
Example Response:
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"name": "NewName",
"description": "NewDescription",
"orgWide": false,
"fields": [],
"stages": {},
"stageOrder": [],
"creationTimestamp": 1348417307038,
"lastUpdatedTimestamp": 1348418701278,
"aclEntries": [],
"owner": {
"email": "tesla@streak.com",
"isOwner": true
},
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYZAw",
"key": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYZAw"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline to be edited |
The post data for this request must be a well formed JSON object. The properties of the JSON object determine what properties of the pipeline get updated. The following are the allowable properties for that JSON object. All other properties will be ignored.
| JSON Property | Description |
|---|---|
name | (optional) The name of the pipeline |
description | The description of the pipeline (optional) |
stageOrder | A JSON array containing ordering of stage keys. The elements of this array are allowed to be re-ordered only. The order of this array affects the UI of the pipeline in the Web UI. (optional) |
orgWide | A boolean indicating whether this pipeline is shared to everyone in the organization. For Google apps customers this means any other user with the same domain in their email address. This field has no effect for regular Gmail users. (optional) |
aclEntries | This is a JSON array of objects representing who the pipeline is currently shared with. You can add and remove objects in a single update. Each object in this array is required to have 1 property - email. Adding a user to the aclEntries causes them to receive an email informing them that the pipeline has been shared with them. (optional) |
Remember, to change the fields or the stages property, you must use different endpoints. The fields and stages are only provided as a convenience here. The necessary endpoints are specified in the Field and Stage section of this document.
A box is the fundamental data type in Streak. What a box represents depends on the context it is being used. For sales, a box could be a deal. For hiring, a box may be a candidate. For bug tracking, a box may be a single bug. A box belongs to a single pipeline. A box contains emails, files, reminders and data for custom fields of a pipeline. It also specifies what stage (defined in its pipeline) this box belongs to.
| Property Name | Description |
|---|---|
name | The name of the box |
notes | A built in field for a box |
stageKey | The stage that the box is in. The list of valid stages is defined in the pipeline that the box belongs to |
fields | An object that contains a mapping between a fieldKey and the value for that field. The valid fieldKeys are specified in the pipeline that the box belongs to |
followerKeys | An array of user keys that are following a box. Followers receive email updates on significant changes to a box |
This call lets you get all boxes that the current user has access to. The boxes returned here are across all pipelines a user has access to. This is a fairly expensive call so there is a lower API quota limit. If possible, get boxes using the pipeline key instead.
Example Request:curl https://www.streak.com/api/v1/boxes -u YOUR_API_KEY:
Example Response:
[
{
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww",
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationTimestamp": 1348419890781,
"lastUpdatedTimestamp": 1348419903270,
"name": "FooBox",
"notes": "Sample notes.",
"stageKey": "5001",
"fields": {
"1002": "Developer"
},
"followerKeys": [
"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA"
],
"followerCount": 1,
"commentCount": 0,
"reminderCount": 0,
"gmailThreadCount": 1,
"fileCount": 0,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRh-DA",
"key": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRh-DA"
},
{
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationTimestamp": 1348260320367,
"lastUpdatedTimestamp": 1348342557726,
"name": "MySampleBox",
"stageKey": "5002",
"fields": {
"1003": 1347451200000
},
"followerKeys": [
"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA"
],
"followerCount": 1,
"commentCount": 0,
"reminderCount": 0,
"gmailThreadCount": 1,
"fileCount": 0,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"key": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA"
}
]
This call lets you get all boxes contained in the specified pipeline.
Example Request:curl https://www.streak.com/api/v1/pipelines/{pipelineKey}/boxes -u YOUR_API_KEY:
Example Response:
[
{
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationTimestamp": 1348260320367,
"lastUpdatedTimestamp": 1348342557726,
"name": "MySampleBox",
"stageKey": "5002",
"fields": {
"1003": 1347451200000
},
"followerKeys": [
"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA"
],
"followerCount": 1,
"commentCount": 0,
"reminderCount": 0,
"gmailThreadCount": 1,
"fileCount": 0,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"key": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA"
}
]
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline for which you want the boxes listed |
sortBy | What order to sort the boxes by. There are two valid sorts creationTimestamp and lastUpdatedTimestamp. Both are in descending order. (optional) |
This call gives you a specific box based on the key you provide.
Example Request:curl https://www.streak.com/api/v1/boxes/{boxKey} -u YOUR_API_KEY:
Example Response:
{
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationTimestamp": 1348260320367,
"lastUpdatedTimestamp": 1348342557726,
"name": "MySampleBox",
"stageKey": "5002",
"fields": {
"1003": 1347451200000
},
"followerKeys": [
"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA"
],
"followerCount": 1,
"commentCount": 0,
"reminderCount": 0,
"gmailThreadCount": 1,
"fileCount": 0,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"key": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA"
}
| Parameter | Description |
|---|---|
boxKey | The key of the box |
This call gives you a specific box based on the key you provide.
Example Request:curl -X PUT -d "name=NewBox" https://www.streak.com/api/v1/pipelines/{pipelinesKey}/boxes -u YOUR_API_KEY:
Example Response:
{
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationTimestamp": 1348436318347,
"lastUpdatedTimestamp": 1348436318347,
"name": "NewBox",
"stageKey": "5001",
"fields": {},
"followerKeys": [
"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA"
],
"followerCount": 1,
"commentCount": 0,
"reminderCount": 0,
"gmailThreadCount": 1,
"fileCount": 0,
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"key": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline this box should belong to |
name | The name of this box |
stageKey | The stage of this box (Optional) |
This call lets you delete a particular box. It also deletes all of the relevant data such as files, emails, and reminders for that box.
Example Request:curl -X DELETE https://www.streak.com/api/v1/boxes/{boxKey} -u YOUR_API_KEY:
Example Response:
{"success":true}
| Parameter | Description |
|---|---|
boxKey | The key of the box |
This call lets you edit the properties of a box.
Example Request:curl -X POST \
-d "{name:NewlyNamedBox, notes:AdditionalNotesText, stageKey:5002}" \
-u YOUR_API_KEY: \
-H "Content-Type:application/json" \
https://www.streak.com/api/v1/boxes/{boxKey}
Example Response:
{
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationTimestamp": 1348436318347,
"lastUpdatedTimestamp": 1348441203844,
"name": "NewlyNamedBox",
"notes": "AdditionalNotesText",
"stageKey": "5002",
"fields": {},
"followerKeys": [],
"followerCount": 0,
"commentCount": 0,
"reminderCount": 0,
"gmailThreadCount": 1,
"fileCount": 0,
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"key": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw"
}
| Parameter | Description |
|---|---|
boxKey | The key of the box to be edited |
The post data for this request must be a well formed JSON object. The properties of the JSON object determine what properties of the box get updated. The following are the allowable properties for that JSON object. All other properties will be ignored.
| JSON Property | Description |
|---|---|
name | The name of the box (optional) |
notes | The notes of the box (optional) |
stageKey | The key of the stage that this box should be in. A list of valid stage keys can be found from the pipeline that this box belongs to (optional) |
followerKeys | A JSON array of user keys who are following this box. When a user follows a box, they receive notification emails upon major changes to the box (optional) |
Remember, to change the fields or the stages property, you must use different endpoints. The fields and stages are only provided as a convenience here. The necessary endpoints are specified in the Field and Stage section of this document.
Stages are different possible states a box can be in. The list of valid stages a box can be in are defined in the pipeline it belongs to. All boxes in the same pipeline all have the same set of permissible stages. Listing the stages for a given pipeline can be done by getting a specific pipeline or using the list stages enpoint below. To set what stage a given box is in, update the stageKey property of a box using the edit box endpoint.
This call lists the stages defined in a pipeline. Remember, this is only the definition of the stages - to change what stage a box is in, simply update the box with a new stageKey.
curl https://www.streak.com/api/v1/pipelines/{pipelineKey}/stages -u YOUR_API_KEY:
Example Response:
{
"5002": {
"name": "Phone Screen",
"key": "5002"
},
"5001": {
"name": "Resume",
"key": "5001"
},
"5004": {
"name": "Internal Decision",
"key": "5004"
},
"5003": {
"name": "Interview",
"key": "5003"
},
"5007": {
"name": "Passed",
"key": "5007"
},
"5005": {
"name": "Offer Negotiation",
"key": "5005"
},
"5006": {
"name": "Hired",
"key": "5006"
}
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
This call gives you a specific stage defined in a pipeline
Example Request:curl https://www.streak.com/api/v1/pipelines/{pipelineKey}/stages/{stageKey} -u YOUR_API_KEY:
Example Response:
{
"name": "Interview",
"key": "5003"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
stageKey | The key of the stage |
This call lets you create a stage defined in a pipeline.
Example Request:curl -X PUT -d "name=NewStage" https://www.streak.com/api/v1/pipelines/{pipelineKey}/stages -u YOUR_API_KEY:
Example Response:
{
"name": "NewStage",
"key": "5008"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline for which you want the boxes listed |
name | The name of the stage you'd like to add to the pipeline |
This call lets you delete a stage defined in a pipeline. This call will only suceed if there are no boxes tagged with the key of this stage, else it throws a 400.
curl -X DELETE https://www.streak.com/api/v1/pipelines/{pipelineKey}/stages/{stageKey} -u YOUR_API_KEY:
Example Response:
{"success":true}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
stageKey | The key of the stage |
This call lets you edit the name of a stage.
Example Request:curl -X POST \
-d "{name:EditedStage}" \
-u YOUR_API_KEY: \
-H "Content-Type:application/json" \
https://www.streak.com/api/v1/pipelines/{pipelineKey}/stages/{stageKey}
Example Response:
{
"name": "EditedStage",
"key": "5008"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
stageKey | The key of the stage |
name | The name of the stage |
Fields allow users to define custom schema on their boxes.
That is, a field is user defined metadata on a box. In the web UI of Streak, a field shows up as an additional column in the pipeline view and box views. Fields are defined on a per pipeline basis. This means that all boxes in the same pipeline have the same custom fields (schema).
Fields have a name and a type. The type can be any of: TEXT_INPUT, DATE or PERSON.
| Field Type | Description |
|---|---|
TEXT_INPUT | This can be any arbitrary string and the should be represented in JSON as a string. |
PERSON | This field supports values of contacts from the Google Contacts api as well as arbitrary names and email addresses. It is represented as an array of JSON Objects. |
DATE | This is formatted as the number of milliseconds since epoch. This should be a number type when used in JSON. |
This call lists the fields defined in a pipeline. Remember, this is only the definition of the fields - to change the value of the field for a specific box, use the edit field for box endpoint.
Example Request:curl https://www.streak.com/api/v1/pipelines/{pipelineKey}/fields -u YOUR_API_KEY:
Example Response:
[
{
"name": "Assigned To",
"key": "1001",
"type": "PERSON"
},
{
"name": "Position",
"key": "1002",
"type": "TEXT_INPUT"
},
{
"name": "Start Date",
"key": "1003",
"type": "DATE"
}
]
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
This call lets you get a specific field defined in a pipeline.
Example Request:curl https://www.streak.com/api/v1/pipelines/{pipelineKey}/fields/{fieldKey} -u YOUR_API_KEY:
Example Response:
{
"name": "Start Date",
"key": "1003",
"type": "DATE"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
fieldKey | The key of the field |
This call lets you create a field for a pipeline. This defines the field in the pipeline so that you can add values for that field for each box in the pipeline.
Example Request:curl -X PUT -d "name=NewField&type=TEXT_INPUT" https://www.streak.com/api/v1/pipelines/{pipelineKey}/fields -u YOUR_API_KEY:
Example Response:
{
"name": "NewField",
"key": "1001",
"type": "TEXT_INPUT"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
name | The key of the field |
type | The type of the field, can be any of: TEXT_INPUT, DATE or PERSON |
This call lets you delete a field defined in a pipeline. Note: this will also remove the values of this field for every box in the pipeline.
Example Request:curl -X DELETE https://www.streak.com/api/v1/pipelines/{pipelineKey}/fields/{fieldKey} -u YOUR_API_KEY:
Example Response:
{"success":true}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
fieldKey | The key of the field |
This call lets you edit the name of a field. Note that editing the type of a field is not currently permitted and will throw a 400 error.
curl -X POST \
-d "{name:MyEditedFieldName}" \
-u YOUR_API_KEY: \
-H "Content-Type:application/json" \
https://www.streak.com/api/v1/pipelines/{pipelineKey}/fields/{fieldKey}
Example Response:
{
"name": "MyEditedFieldName",
"key": "1001",
"type": "PERSON"
}
| Parameter | Description |
|---|---|
pipelineKey | The key of the pipeline |
fieldKey | The key of the field |
name | The new name of the field |
This call lists the field values for the box specified.
Example Request:curl https://www.streak.com/api/v1/boxes/{boxKey}/fields -u YOUR_API_KEY:
Example Response:
[
{
"key": "1001",
"value": {
"email":"foo@bar.com"
}
},
{
"key": "1002"
"value": "Some string"
},
{
"key": "1003",
"value": 1347451200000
},
{
"key": "1004",
}
]
Note: for fields that have no value set, the value property is ommitted from the returned JSON
| Parameter | Description |
|---|---|
boxKey | The key of the box |
This call gets a specific field value for the box specified.
Example Request:curl -X POST -d "" https://www.streak.com/api/v1/boxes/{boxKey}/fields/{fieldKey} -u YOUR_API_KEY:
Example Response:
{
"key": "1003",
"value": 1347451200000
}
| Parameter | Description |
|---|---|
boxKey | The key of the box |
fieldKey | The key of the field |
This call lets you edit the value of a field for a particular box.
Example Request:curl -X POST -d "{value:1347451450000}" https://www.streak.com/api/v1/boxes/{boxKey}/fields/{fieldKey} -u YOUR_API_KEY:
Example Response:
{
"key": "1003",
"value": 1347451200000
}
| Parameter | Description |
|---|---|
boxKey | The key of the box |
fieldKey | The name of the field |
value | The new value for the field. |
Reminders send an email to one or many users reminding them of the box and message specified. Reminders are associated with a box. They can optionally remind all followers of a box in addition to the creator of the reminder. A reminder message can also be optionally specified.
| Property Name | Description |
|---|---|
creatorKey | The user key of the user that created the reminder |
creationDate | The date the remidner was created |
remindDate | The date the reminder should be sent |
message | A message to the user that should be included in the reminder when sent |
status | Whether the reminder has been SCHEDULED to send in the future or already SENT |
This call lets you get all the reminders associated with a particular box.
Example Request:curl https://www.streak.com/api/v1/boxes/{boxKey}/reminders -u YOUR_API_KEY:
Example Response:
[
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationDate": 1348470495297,
"remindDate": 1348585200000,
"message": "Follow up with this lead",
"remindFollowers": true,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRh-DA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww",
"status": "SCHEDULED",
"reminderKey": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIYxQEM",
"creatorName": "tesla@streak.com",
"key": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIYxQEM"
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationDate": 1348470540730,
"remindDate": 1349074800000,
"message": "remember to read resume",
"remindFollowers": false,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRh-DA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww",
"status": "SCHEDULED",
"reminderKey": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIYxgEM",
"creatorName": "tesla@streak.com",
"key": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIYxgEM"
}
]
| Parameter | Description |
|---|---|
boxKey | The key of the box for which you want the reminders listed |
This call lets you get a specific reminder.
Example Request:curl https://www.streak.com/api/v1/reminders/{reminderKey} -u YOUR_API_KEY:<
Example Response:
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationDate": 1348470540730,
"remindDate": 1349074800000,
"message": "remember to read resume",
"remindFollowers": false,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRh-DA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww",
"status": "SCHEDULED",
"reminderKey": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIYxgEM",
"creatorName": "tesla@streak.com",
"key": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIYxgEM"
}
| Parameter | Description |
|---|---|
reminderKey | The key of the reminder. |
This call lets you create a reminder.
Example Request:curl -X PUT \
-d "remindDate=1374271760000&remindFollowers=true&message=sample" \
-u YOUR_API_KEY: \
https://www.streak.com/api/v1/boxes/{boxKey}/reminders
Example Response:
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationDate": 1348471364907,
"remindDate": 1374271760000,
"message": "sample",
"remindFollowers": true,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRh-DA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww",
"status": "SCHEDULED",
"reminderKey": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIY7wEM",
"creatorName": "tesla@streak.com",
"key": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIY7wEM"
}
| Parameter | Description |
|---|---|
boxKey | The key of the box that this reminder should be associated with. |
message | A message attached to the reminder. When the user is reminded (by email) of the associated box, the message text is also presented. (optional) |
remindDate | The date this reminder should be sent to the user. This is specified using number of milliseconds since epoch. |
remindFollowers | A boolean whether all followers of the associated box should be reminded as well. Should be set to true or false. |
This call lets you delete a specific reminder.
Example Request:curl -X DELETE https://www.streak.com/api/v1/reminders/{reminderKey} -u YOUR_API_KEY:
Example Response:
{"success":true}
| Parameter | Description |
|---|---|
reminderKey | The key of the reminder you want to delete. |
This call lets you edit a specific reminder.
Example Request:curl -X POST \
-d "{remindDate:1374271760000,remindFollowers:false, message:newMessage}" \
-u YOUR_API_KEY: \
-H "Content-Type:application/json" \
https://www.streak.com/api/v1/reminders/{reminderKey}
Example Response:
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"creationDate": 1348471364907,
"remindDate": 1374271760000,
"message": "newMessage",
"remindFollowers": false,
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRh-DA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYMww",
"status": "SCHEDULED",
"reminderKey": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIY7wEM",
"creatorName": "tesla@streak.com",
"key": "agptYWlsZm9vZ2FlcisLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIUmVtaW5kZXIY7wEM"
}
| Parameter | Description |
|---|---|
reminderKey | The key of the reminder you want to edit. |
The post data for this request must be a well formed JSON object. The properties of the JSON object determine what properties of the pipeline get updated. The following are the allowable properties for that JSON object. All other properties will be ignored.
| JSON Property | Description |
|---|---|
message | A message attached to the reminder. When the user is reminded (by email) of the associated box, the message text is also presented. (optional) |
remindDate | The date this reminder should be sent to the user. This is specified using number of milliseconds since epoch. (optional) |
remindFollowers | A boolean whether all followers of the associated box should be reminded as well. Should be set to true or false. (optional but defaults to false if not present) |
Files are automatically extracted from emails that exist in a box. Each file is associated with the box it's in.
| Property Name | Description |
|---|---|
fileOwner | Each file comes from a particular email that was added to a box. This property is the key of the user that added the email to the box. |
size | The size of the file in bytes |
mimeType | The mime type of the file |
fileName | The filename with extension |
mainFileName | The filename without the extension |
This call lets you get all the files associated with a particular box.
Example Request:curl https://www.streak.com/api/v1/boxes/{boxKey}/files -u YOUR_API_KEY:
Example Response:
[
{
"fileOwner": "agptYWlsZm9vZ2FlcigLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchiDsAEM",
"size": "4",
"mimeType": "text/plain",
"fileName": "foo.txt",
"mainFileName": "foo",
"fileKey": "agptYWlsZm9vZ2FlcigLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIERmlsZRiasAEM"
}
]
| Parameter | Description |
|---|---|
boxKey | The key of the box for which you want the files listed |
This call lets you get a specific file.
Example Request:curl https://www.streak.com/api/v1/files/{fileKey} -u YOUR_API_KEY:
Example Response:
{
"fileOwner": "agptYWlsZm9vZ2FlcigLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchiDsAEM",
"size": "4",
"mimeType": "text/plain",
"fileName": "foo.txt",
"mainFileName": "foo",
"fileKey": "agptYWlsZm9vZ2FlcigLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIERmlsZRiasAEM"
}
| Parameter | Description |
|---|---|
fileKey | The key of the file. |
This call lets you get the binary contents of the file. The mime type of the response contents is based on the file type.
Example Request:curl https://www.streak.com/api/v1/files/{fileKey}/contents -u YOUR_API_KEY:
| Parameter | Description |
|---|---|
fileKey | The key of the file. |
This call lets you get a short lived, one time use URL to the file. This link expires quickly and can only be used once.
Example Request:curl https://www.streak.com/api/v1/files/{fileKey}/link -u YOUR_API_KEY:
| Parameter | Description |
|---|---|
fileKey | The key of the file. |
Streak associates a list of gmail threads with each box in a pipeline.
| Property Name | Description |
|---|---|
subject | The subject of the first email in the thread |
namesemailAddresses | The senders and recipients on the gmail thread. |
lastEmailTimestamp | The date and time of the last email in the thread, as a unix timestamp |
threadGmailId | Gmail's key for the thread. |
files | Attachments on messages in the thread. |
This call lets you get all the threads associated with a particular box.
Example Request:curl https://www.streak.com/api/v1/boxes/{boxKey}/threads -u YOUR_API_KEY:
Example Response:
[
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRgJDA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYBQw",
"creationTimestamp": 1367889076605,
"lastUpdatedTimestamp": 1367889076605,
"lastEmailTimestamp": 1367886197000,
"subject": "Re: Some email subject line",
"names": [
"Adam Smith",
"Betty Smith",
"Carl Jones"
],
"emailAddresses": [
"asmith@example.com",
"bsmith@example.com",
"carl.jones@gmail.com"
],
"threadGmailId": "13e7c4bcce4c3693",
"fileKeys": [],
"files": [],
"gmailThreadKey": "agptYWlsZm9vZ2Flci0LEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxILR21haWxUaHJlYWQYKQw",
"key": "agptYWlsZm9vZ2Flci0LEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxILR21haWxUaHJlYWQYKQw"
}
]
| Parameter | Description |
|---|---|
boxKey | The key of the box for which you want the threads listed |
This call lets you get a specific thread.
Example Request:curl https://www.streak.com/api/v1/threads/{threadKey} -u YOUR_API_KEY:
Example Response:
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRgJDA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYBQw",
"creationTimestamp": 1367889076605,
"lastUpdatedTimestamp": 1367889076605,
"lastEmailTimestamp": 1367886197000,
"subject": "Re: Some email subject line",
"names": [
"Adam Smith",
"Betty Smith",
"Carl Jones"
],
"emailAddresses": [
"asmith@example.com",
"bsmith@example.com",
"carl.jones@gmail.com"
],
"threadGmailId": "13e7c4bcce4c3693",
"fileKeys": [],
"files": [],
"gmailThreadKey": "agptYWlsZm9vZ2Flci0LEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxILR21haWxUaHJlYWQYKQw",
"key": "agptYWlsZm9vZ2Flci0LEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxILR21haWxUaHJlYWQYKQw"
}
| Parameter | Description |
|---|---|
threadKey | The key of the thread. |
The Search endpoint allows you to search the contents on pipelines and boxes. The search functionality returns a relevance sorted list of pipelines and boxes. Pipelines will match on their description while boxes will match on built in and custom field contents.
Each returned result contains a field resultEntityKey which is the key to the box or pipeline. The searchResultType field will tell you whether the result is a box or pipeline.
| Property Name | Description |
|---|---|
resultEntityKey | The key of the entity that this result represents. This can be a key to a box or a key to a pipeline, depending on searchResultType |
title | A descriptive name for this result. Usually the name of the box or the pipeline |
snippet | A snippet of text quoting why the particular result matched the query |
displayDate | The date that the entity that this result represents was last updated. Useful to display in UI's |
searchResultType | Either PIPELINE or BOX |
relevanceScore | A score representive how relevant the resulting entity is relative to the query. This is normalized across results |
| Parameter | Description |
|---|---|
query | The string to search for |
Example Request:
curl https://www.streak.com/api/v1/search?query=foo -u YOUR_API_KEY:
Example Response:
[
{
resultEntityKey: "agxVyMwsSDE9yZ2FuaXphdGlvbiIWYWxlZW0ubWF3YW5pQGdtYWlsLmNvbQwLEgRDYXNlGOldDA",
title: "Foo Box1",
snippet: "dfkjbsdkjfsdj fsdiuhfiusd hfuidshfiusd hfsi dufiusdfi",
displayDate: 1335548508295,
searchResultType: "BOX",
relevanceScore: 16
},
{
resultEntityKey: "agxmb29nYWVyMwsSDE9yZ2FuaXphdGlvbiIWYWxlZW0ubWF3YW5pQGdtYWlsLmNvbQwLEgRDYXNlGMkXDA",
title: "Foo Box2",
snippet: "Foo Box2",
displayDate: 1335275168414,
searchResultType: "BOX",
relevanceScore: 15
},
{
resultEntityKey: "fm1haWxmb29nYWVyMwsSDE9yZ2FuaXphdGlvbiIWYWxlZW0ubWF3YW5pQGdtYWlsLmNvbQwLEgRDYXNlGN02DA",
title: "Foo Box2",
snippet: "random snippet text with foo in it",
displayDate: 1335275170078,
searchResultType: "BOX",
relevanceScore: 1
}
]
The Newsfeed endpoint gives you historical data on a specific entity. Most edits on the entity and creation of child entities will generate newsfeed events. There are several constants that give you details on what changed, by whom and to what entity.
| Property Name | Description |
|---|---|
creatorKey | The user key of the user that created this newsfeed item |
timestamp | The datetime when this event occurred |
newsfeedItemScope | What this event applies to - either a BOX or PIPELINE |
newsfeedItemOperation | Whether this event refers to an CREATE, UPDATE, or DELETE |
newsfeedItemSpecific | What specifically happenned to cause this event |
specificVariables | Am object containing additional information regarding this specific event type |
This endpoint will give you not only the historical changes for a particular pipeline, but also the historical changes for all boxes contained within the pipeline. It is limited to the 50 most recent events.
| Parameter | Description |
|---|---|
pipelineKey | The pipeline for which you want the newsfeed for |
activityFrom | This paramater lets you filter Newsfeed items to just those created by other users or just by the current user. There are 3 allowed values for this parameter: ALL, JUST_MEor JUST_OTHERS. The default is ALL (optional) |
detailLevel | This is similar to the specifics parameter but uses a predetermined set of specifics to filter on. The possible values for this parameter are ALL or CONDENSED. The CONDENSED value limits the reuslts to only certain important specific parameters determined by Streak (optional) |
Example Requests:
curl https://www.streak.com/api/v1/pipelines/{pipelineKey}/newsfeed -u YOUR_API_KEY:
Example Response:
[
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348441203844,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_STAGE",
"specificVariables": {
"OLD_STAGE_NAME": "Lead",
"CASE_NAME": "NewlyNamedBox",
"STAGE_NAME": "Contacted"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw\"\u003eNewlyNamedBox\u003c/a\u003e",
"captionText": "The stage has been changed to \u003ci\u003eContacted\u003c/i\u003e.",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348441203844,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "REMOVE_FOLLOWER",
"specificVariables": {
"CASE_NAME": "NewlyNamedBox"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"titleText": " is no longer following the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw\"\u003eNewlyNamedBox\u003c/a\u003e",
"captionText": "",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348441160727,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_NOTES",
"specificVariables": {
"NOTES": "AdditionalNotesText",
"CASE_NAME": "NewBox"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw\"\u003eNewBox\u003c/a\u003e",
"captionText": "The notes have been edited to: ",
"userText": "tesla@streak.com",
"detailText": "AdditionalNotesText"
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348441160727,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_NAME",
"specificVariables": {
"CASE_NAME": "NewlyNamedBox",
"OLD_NAME": "NewBox"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box NewBox",
"captionText": "The \u003ci\u003eNewBox\u003c/i\u003e box has been renamed to \u003ci\u003eNewlyNamedBox\u003c/i\u003e.",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348441160727,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "REMOVE_FOLLOWER",
"specificVariables": {
"CASE_NAME": "NewlyNamedBox"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"titleText": " is no longer following the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw\"\u003eNewlyNamedBox\u003c/a\u003e",
"captionText": "",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348436318354,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "CREATE",
"newsfeedItemSpecific": "NEW_BOX",
"specificVariables": {
"CASE_NAME": "NewBox"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "created the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw\"\u003eNewBox\u003c/a\u003e",
"captionText": "",
"userText": "tesla@streak.com",
"detailText": ""
}
]
This endpoint will give the historical changes for a particular box. It is limited to the 50 most recent events.
| Parameter | Description |
|---|---|
boxKey | The box for which you want the newsfeed for |
activityFrom | This paramater lets you filter Newsfeed items to just those created by other users or just by the current user. There are 3 allowed values for this parameter: ALL, JUST_MEor JUST_OTHERS. The default is ALL (optional) |
detailLevel | This is similar to the specifics parameter but uses a predetermined set of specifics to filter on. The possible values for this parameter are ALL or CONDENSED. The CONDENSED value limits the reuslts to only certain important specific parameters determined by Streak (optional) |
Example Request:
curl https://www.streak.com/api/v1/pipelines/{pipelineKey}/newsfeed -u YOUR_API_KEY:
Example Response:
[
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348441203844,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_STAGE",
"specificVariables": {
"OLD_STAGE_NAME": "Lead",
"CASE_NAME": "NewlyNamedBox",
"STAGE_NAME": "Contacted"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw\"\u003eNewlyNamedBox\u003c/a\u003e",
"captionText": "The stage has been changed to \u003ci\u003eContacted\u003c/i\u003e.",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348436318354,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "CREATE",
"newsfeedItemSpecific": "NEW_BOX",
"specificVariables": {
"CASE_NAME": "NewBox"
},
"boxKey": "agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "created the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlcicLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRiZAQw\"\u003eNewBox\u003c/a\u003e",
"captionText": "",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348342557726,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_STAGE",
"specificVariables": {
"OLD_STAGE_NAME": "Closed",
"CASE_NAME": "MySampleBox",
"STAGE_NAME": "Contacted"
},
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA\"\u003eMySampleBox\u003c/a\u003e",
"captionText": "The stage has been changed to \u003ci\u003eContacted\u003c/i\u003e.",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348260431608,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_STAGE",
"specificVariables": {
"OLD_STAGE_NAME": "Contacted",
"CASE_NAME": "sdfdsf",
"STAGE_NAME": "Closed"
},
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA\"\u003esdfdsf\u003c/a\u003e",
"captionText": "The stage has been changed to \u003ci\u003eClosed\u003c/i\u003e.",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348260428137,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_STAGE",
"specificVariables": {
"OLD_STAGE_NAME": "Negotiating",
"CASE_NAME": "sdfdsf",
"STAGE_NAME": "Contacted"
},
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA\"\u003esdfdsf\u003c/a\u003e",
"captionText": "The stage has been changed to \u003ci\u003eContacted\u003c/i\u003e.",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348260425505,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "EDIT",
"newsfeedItemSpecific": "EDIT_STAGE",
"specificVariables": {
"OLD_STAGE_NAME": "Lead",
"CASE_NAME": "sdfdsf",
"STAGE_NAME": "Negotiating"
},
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "edited the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA\"\u003esdfdsf\u003c/a\u003e",
"captionText": "The stage has been changed to \u003ci\u003eNegotiating\u003c/i\u003e.",
"userText": "tesla@streak.com",
"detailText": ""
},
{
"creatorKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEVXNlchgBDA",
"timestamp": 1348260320432,
"newsfeedItemScope": "BOX",
"newsfeedItemOperation": "CREATE",
"newsfeedItemSpecific": "NEW_BOX",
"specificVariables": {
"CASE_NAME": "sdfdsf"
},
"boxKey": "agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA",
"pipelineKey": "agptYWlsZm9vZ2FlcioLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIIV29ya2Zsb3cYPww",
"titleText": "created the box \u003ca href\u003d\"#\" caseKey\u003d\"agptYWlsZm9vZ2FlciYLEgxPcmdhbml6YXRpb24iCnN0cmVhay5jb20MCxIEQ2FzZRhaDA\"\u003esdfdsf\u003c/a\u003e",
"captionText": "",
"userText": "tesla@streak.com",
"detailText": ""
}
]
This endpoint will give you not only the historical changes for all pipelines, but also the historical changes for all boxes contained within all the pipelines this user has access to. It is limited to the 50 most recent events.
| Parameter | Description |
|---|---|
activityFrom | This paramater lets you filter Newsfeed items to just those created by other users or just by the current user. There are 3 allowed values for this parameter: ALL, JUST_MEor JUST_OTHERS. The default is ALL (optional) |
detailLevel | This is similar to the specifics parameter but uses a predetermined set of specifics to filter on. The possible values for this parameter are ALL or CONDENSED. The CONDENSED value limits the reuslts to only certain important specific parameters determined by Streak (optional) |
Example Requests:
curl https://www.streak.com/api/v1/newsfeed -u YOUR_API_KEY:
An API console to try out sample requests is coming soon.
Have questions? Need help? Email us at api@streak.com and we'll add them to our list here.