All requests require an API key. API keys are passed via the Authorization HTTP header:
Authorization: Bearer [**API Key**]
A project represents a campaign in ThankView.
GET https://api.thankview.com/api/projects
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"projects": [
{
"id": 1,
"name": "Project 1",
"created_by": "User 1"
},
{
"id": 2,
"name": "Project 2",
"created_by": "User 2"
}
]
}
}
Recipients are the contacts within each project.
GET https://api.thankview.com/api/recipient?project_id=1&limit=100&page=0&search=first
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"page": 0,
"limit": 100,
"recipients": [
{
"id": 1,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
},
{
"id": 2,
"first_name": "First 2",
"last_name": "Last 2",
"email": "email2@email.com"
}
]
}
}
POST https://api.thankview.com/api/recipient
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"project_id": "1",
"recipients": [
{
"title": "Title",
"name": "First Name 1",
"last_name": "Last Name 1",
"preferred_name": "Nickname",
"email": "email1@email.com",
"notes": "",
"donor_id": "1000001",
"phone": "222-333-4444",
"company": "ThankView",
"last_donation": "100.00",
"designation": "Alumni Fund"
},
{
"title": "Title",
"name": "First Name 2",
"last_name": "Last Name 2",
"preferred_name": "Nickname",
"email": "email2@email.com",
"notes": "",
"donor_id": "1000002",
"phone": "333-444-5555",
"company": "ThankView",
"last_donation": "150.00",
"designation": "Athletics Fund"
}
]
}
{
"success": "true",
"data": {
"updated": 1,
"invalid": 0,
"new_records": 1,
"existing_records": 0,
"ids": [1,2,3]
}
}
DELETE https://api.thankview.com/api/recipient/{id}
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"project_id": "1"
}
{
"success": "true"
}
Upload videos to your portal and attach videos to recipients of a campaign.
GET https://api.thankview.com/api/video?limit=100&page=0&search=title
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"page": 0,
"limit": 100,
"videos": [
{
"id": 1,
"title": "Title 1",
"video_path": "https://media.thankview.com/video1.mp4",
"description": "My first video"
},
{
"id": 2,
"title": "Title 2",
"video_path": "https://media.thankview.com/video2.mp4",
"description": "My second video"
}
]
}
}
POST https://api.thankview.com/api/video
Content-Type: multipart/form-data; boundary=MultipartBoundry
Authorization: Bearer [**API Key**]
--MultipartBoundry
Content-Disposition: form-data; name="file"; filename="video.mp4"
Content-Type: video/mp4
rawvideocontent
--MultipartBoundry
Content-Disposition: form-data; name="title"
A new video
--MultipartBoundry
Content-Disposition: form-data; name="description"
Video description
{
"success": "true",
"data": {
"id": 5,
"title": "A new video",
"video_path": "https://media.thankview.com/video5.mp4",
"description": "Video description",
"tags": "tag1,tag2"
}
}
DELETE https://api.thankview.com/api/video/{id}
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true"
}
POST https://api.thankview.com/api/video/attach
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"project_id": "1",
"video_id": "2",
"recipient_ids": [1,2,4,5]
}
{
"success": "true"
}
Schedule and sends ThankViews within a campaign.
GET https://api.thankview.com/api/send?project_id=1
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"ready_to_send": 2,
"scheduled": 1,
"sending": 0,
"delivered": 2,
"bounced": 0
}
}
GET https://api.thankview.com/api/send/readyToSend?project_id=1&limit=100&page=0
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"page": 0,
"limit": 100,
"recipients": [
{
"id": 1,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
},
{
"id": 2,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
}
]
}
}
GET https://api.thankview.com/api/send/scheduled?project_id=1&limit=100&page=0
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"page": 0,
"limit": 100,
"recipients": [
{
"id": 1,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
},
{
"id": 2,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
}
]
}
}
GET https://api.thankview.com/api/send/sending?project_id=1&limit=100&page=0
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"page": 0,
"limit": 100,
"recipients": [
{
"id": 1,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
},
{
"id": 2,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
}
]
}
}
GET https://api.thankview.com/api/send/delivered?project_id=1&limit=100&page=0
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"page": 0,
"limit": 100,
"recipients": [
{
"id": 1,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
},
{
"id": 2,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
}
]
}
}
GET https://api.thankview.com/api/send/bounced?project_id=1&limit=100&page=0
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"page": 0,
"limit": 100,
"recipients": [
{
"id": 1,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
},
{
"id": 2,
"first_name": "First 1",
"last_name": "Last 1",
"email": "email1@email.com"
}
]
}
}
POST https://api.thankview.com/api/send/now
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"project_id": "1",
"recipient_ids": [1,2,4,5]
}
{
"success": "true",
"data": {
"count": 3,
"scheduled": "2020-04-30 12:00:00"
}
}
POST https://api.thankview.com/api/send/schedule
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"project_id": "1",
"schedule": "2030-01-01 12:00:00",
"recipient_ids": [1,2,4,5]
}
{
"success": "true",
"data": {
"count": 3,
"scheduled": "2030-01-01 12:00:00"
}
}
POST https://api.thankview.com/api/send/cancelScheduled
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"project_id": "1",
"recipient_ids": [1,2,4,5]
}
{
"success": "true",
"data": {
"count": 3,
"scheduled": "2030-01-01 12:00:00"
}
}
GET https://api.thankview.com/api/metrics?project_id=1&sent_start=YYYY-MM-DD&sent_end=YYYY-MM-DD
Content-Type: application/json
Authorization: Bearer [**API Key**]
{
"success": "true",
"data": {
"metrics": [
{
"project_id": 92,
"project_name": "project 1",
"project_type": "Thank Yous",
"recorder_name": "name",
"recipient_id": 8641,
"title": "",
"first_name": "First 1",
"last_name": "Last 1",
"sent_to": "email1@email.com",
"email": "email1@email.com",
"phone": "+12345678920",
"stars": 3,
"donor_id": "123",
"birthday": "2021-03-16",
"notes": null,
"sent_date": "2021-03-12 16:48:08",
"bounced": 0,
"bounced_reason": null,
"unsubscribe": 0,
"unsubscribe_date": null,
"reported_spam": null,
"opened": 0,
"opened_date": null,
"clicked": 0,
"watched_0": 1,
"watched_25": 1,
"watched_50": 1,
"watched_75": 1,
"watched_100": 0,
"cta_clicked": 1,
"views": 1,
"downloads": 0,
"shares": 0,
"reply": null,
"video_url": "https://dev-thankview.com/video/2601f32c2d4920?source=export",
"video_download": "https://dev-thankview.com/videos-processed/final-601f32e84c7aa-139.mp4",
"video_url_id": "2601f32c2d4920",
"device": null,
"city": null,
"state": null,
"country": null,
"preferred_name": null,
"company": null,
"high_school": null,
"graduation_year": null,
"race": null,
"major": null,
"department": null,
"address": null,
"address2": null,
"zip_code": null,
"counselor": null,
"sport": null,
"interest": null,
"project_status": "Active",
"subject": "A custom ThankView for you",
"video_title": "Giving Season Video",
"video_description": "Video for a giving season campaign",
"project_last_send_date": "2024-01-01",
"anniversary": "2020-01-01"
}
]
}
}