-
Notifications
You must be signed in to change notification settings - Fork 0
Authorship Intake
gabep-tech edited this page May 11, 2026
·
7 revisions
Submit and list Authorship intake data for reseller-owned accounts and campaigns. All endpoints require Authorization using Bearer JWT and/or API key. The authenticated reseller account is used to verify ownership.
POST /api/v1/authorship
Creates one Authorship intake for an account/campaign pair. The API verifies that the reseller owns the account and campaign, confirms an Authorship task exists, requires the task to be Scheduled (status_id = 1), prevents duplicate intake rows, stores intake content, optionally updates the task image, adds a task note, and may add LinkedIn details to the campaign password locker.
{
"account": {
"account_id": 12345,
"camp_id": 54321
},
"author": {
"full_name": "Jane Doe",
"position": "Editor",
"business_name": "Example Co"
},
"linked_in": {
"url": "https://www.linkedin.com/in/janedoe"
}
}
Required fields
account.account_id numeric
account.camp_id numeric
author.full_name string
author.position string
author.business_name string
linked_in object
Optional fields
linked_in.url string
linked_in.username string
linked_in.password string
link_image string
experience_history string
interests_facts string
areas_expertise string
education string
current_work string
credentials string
pub_awards string
link_image is normalized by adding https:// when no protocol is supplied. It is only kept when it contains one of: .png, .gif, .jpg, .jpeg, .bmp.
LinkedIn password locker behavior:
URL only: creates a LinkedIn password locker entry with the URL in note.
Username + password: stores the encrypted password and username for LinkedIn workflows.
Passwords must only be submitted over HTTPS.
Success response
{
"data": {},
"error": false,
"messages": [
"Authorship created successfully",
"Success"
]
}
Common error responses
400 Bad Request
{
"data": {},
"error": true,
"messages": [
"The reseller does not own this account. - errorcode: authorship-v1-create:2",
"Bad Request"
]
}
Other create errors include:
The reseller does not own this campaign. - errorcode: authorship-v1-create:3
An intake already exists for this account and campaign. - errorcode: authorship-v1-create:2
Task must be in Scheduled status (status_id = 1) to submit an intake. Current status: {status_id} - errorcode: authorship-v1-create:3
Account does not have Authorship plans - errorcode: authorship-v1-create:4
List Authorship Tasks
GET /api/v1/authorship
Returns Scheduled Authorship tasks for the authenticated reseller. Results are limited to task type 136, status_id = 1, incomplete tasks, and campaigns under the reseller account.
Query parameters
account_id numeric, optional
camp_id numeric, optional
start_date optional, YYYY-MM-DD, filters task.date_due >= start_date
end_date optional, YYYY-MM-DD, filters task.date_due <= end_date
needsIntakeData optional boolean: true returns tasks without intake data, false returns tasks with intake data
Example
curl -H "Authorization: Bearer $TOKEN" \
"https://uat.services.semify.com/api/v1/authorship?account_id=12345&needsIntakeData=true"
Success response
{
"data": [
{
"task_id": 1001,
"camp_id": 54321,
"task_name": "LR3 Authorship",
"task_type_id": 136,
"task_type_name": "LR3 Authorship",
"camp_name": "Example Campaign",
"account_id": 12345,
"status": "Scheduled",
"date_due": "2026-05-15",
"created_date": "2026-05-01",
"intake_id": null
}
],
"error": false,
"messages": [
"Successfully retrieved 1 scheduled Authorship tasks",
"with filters: account_id: 12345, needsIntakeData: true"
]
}
Validation errors
Invalid date formats, invalid date ranges, or invalid needsIntakeData values can return 400 Bad Request or 422 Unprocessable Entity.
{
"error": true,
"messages": [
"start_date must be in YYYY-MM-DD format; needsIntakeData must be either 'true' or 'false'"
]
}
No results
{
"data": {},
"error": true,
"messages": [
"No authorship tasks found"
]
}
Workflow
Call GET /api/v1/authorship?needsIntakeData=true to find Scheduled Authorship tasks that still need intake data.
Submit POST /api/v1/authorship for the returned account_id and camp_id.
Confirm completion with GET /api/v1/authorship?account_id={id}&camp_id={id}&needsIntakeData=false.
Notes
Authorship task type is 136.
Create requires the task to be Scheduled (status_id = 1).
Only one intake is allowed per account_id + camp_id.
Date filters apply to task due date, not created date.
Submitted intake details are also written to a task note.