-
Notifications
You must be signed in to change notification settings - Fork 0
Authorship Intake
gabep-tech edited this page May 4, 2026
·
7 revisions
Submit and list Authorship intake data for accounts and campaigns. Used when an Authorship workflow task exists and the reseller submits author profile information tied to a campaign.
All endpoints require Authorization with a Bearer JWT (and/or API key if your integration uses it—match other v1 wiki pages).
-
Endpoint:
POST /api/v1/authorship -
Description: Creates an authorship intake for the given account and campaign, updates the Authorship task’s
link_imagewhen valid, writes intake rows and a task note. Fails if an intake already exists or prerequisites are not met. -
Required JSON body:
-
account(object):account_id(integer),camp_id(integer) -
author(object):full_name(string),position(string),business_name(string) -
linked_in(object): required;url(string, optional)
-
-
Optional body fields (strings):
linkedin_url(recommended for stored LinkedIn URL),link_image,experience_history,interests_facts,areas_expertise,education,current_work,credentials,pub_awards
-
Endpoint:
GET /api/v1/authorship -
Description: Returns Scheduled Authorship tasks (
task_type_id136, status Scheduled, not completed), optionally filtered. -
Query parameters (all optional):
-
account_id(integer) -
camp_id(integer) -
start_date(date,YYYY-MM-DD) — filters ondate_due≥ start -
end_date(date,YYYY-MM-DD) — filters ondate_due≤ end -
needsIntakeData(trueorfalse) —true: tasks without an intake;false: tasks with an intake
-
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"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" },
"link_image": "https://example.com/photo.jpg",
"credentials": "Certified Example",
"experience_history": "10 years in SEO"
}' \
"https://uat.services.semify.com/api/v1/authorship"curl -H "Authorization: Bearer $TOKEN" \
"https://uat.services.semify.com/api/v1/authorship?account_id=12345&needsIntakeData=true"{
"data": {},
"error": false,
"messages": [
"Authorship created successfully",
"Success"
]
}{
"data": {},
"error": true,
"messages": [
"An intake already exists for this account and campaign. - errorcode: authorship-v1-create:2",
"Bad Request"
]
}{
"data": {},
"error": true,
"messages": [
"Account does not have LR3 Authorship plans - errorcode: authorship-v1-create:4",
"Bad Request"
]
}{
"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"
]
}{
"data": {},
"error": true,
"messages": ["No authorship tasks found"]
}- Confirm service / task: Ensure the account–campaign has an LR3 Authorship task in Scheduled status.
-
Check existing intake: If an intake already exists for that
account_idandcamp_id, creation will fail—use support or internal tools as needed. -
Submit intake:
POST /api/v1/authorshipwith author and optional profile fields. -
Verify:
GET /api/v1/authorshipwithaccount_id/camp_idandneedsIntakeData=falseto confirm an intake is attached.
-
Top-level campaign: Use the correct
camp_idfor the campaign you are attaching to (consistent with how other Semify APIs scope account/campaign). - Task type: Authorship tasks use task type 136; listing only returns tasks that are Scheduled and not completed.
- Duplicate prevention: One intake per account + campaign pair.
-
Image URLs: Only common raster image extensions are accepted for
link_image; others may be cleared. -
Date filters:
start_date/end_dateapply to due date (date_due), not created date.
-
Validate before POST: Use
GETwithneedsIntakeData=trueto find campaigns still needing intake. -
Store error codes: Messages include
authorship-v1-create:Nfor troubleshooting. -
Align LinkedIn fields: Send
linkedin_urlat the root for persistence until the API mapslinked_in.urlautomatically.