Skip to content

Semify Enterprise REST APIs (2.0.0)

This is the documentation for the Semify Endpoints based on the OpenAPI 3.0 specification. You can find out more about Swagger at http://swagger.io.

Download OpenAPI description
Languages
Servers
Mock server

https://developers.semify.com/_mock/openapi/

Sandbox

https://uat.services.semify.com/

Production Server

https://services.semify.com/

accounts

Operations related to accounts.

Operations

keywords

Operations related to keywords.

Operations

Request

The keyword post will create new keywords and attach those to your account/campaign. This supports multiple keywords in an array of object format. There is validation to ensure that all required fields are met

Security
JWTAuth
Bodyapplication/jsonrequired
account_idinteger(int64)required
Example: 1234567
campaign_idinteger(int64)required
Example: 7654321
keywordsArray of objectsrequired
keywords[].​keywordstringrequired
Example: "best hot sauce"
keywords[].​keyword_typestringrequired
Enum"target""interest"
Example: "interest"
curl -i -X POST \
  https://developers.semify.com/_mock/openapi/api/v1/keywords \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "account_id": 1234567,
    "campaign_id": 7654321,
    "keywords": [
      {
        "keyword": "best hot sauce",
        "keyword_type": "interest"
      }
    ]
  }'

Responses

Successful keyword creation

Bodyapplication/json
dataobjectrequired
Example: {"account_id":7654321,"campaign_id":1234546,"keyword":"Keyword","keyword_type":"target"}
data.​account_idinteger(int64)
Example: 7654321
data.​campaign_idinteger(int64)
Example: 1234546
data.​keywordstring
Example: "Keyword"
data.​keyword_typestring
Enum"target""interest"
Example: "target"
errorbooleanrequired
Example: false
paginationobjectrequired
Example: {"totalPages":1,"maxRows":0,"offset":0,"page":1,"totalRecords":1}
pagination.​totalPagesinteger(int64)
Example: 1
pagination.​maxRowsinteger(int64)
Example: 0
pagination.​offsetinteger(int64)
Example: 0
pagination.​pageinteger(int64)
Example: 1
pagination.​totalRecordsinteger(int64)
Example: 1
messagesArray of stringsrequired
Example: ["Missing parameter"]
Response
application/json
{ "data": { "account_id": 7654321, "campaign_id": 1234546, "keyword": "Keyword", "keyword_type": "target" }, "error": false, "pagination": { "totalPages": 1, "maxRows": 0, "offset": 0, "page": 1, "totalRecords": 1 }, "messages": [ "Missing parameter" ] }

Request

The keyword update will allow for a type and status change

Security
JWTAuth
Bodyapplication/jsonrequired
keywordsArray of objectsrequired
keywords[].​statusstringrequired
Enum"activate""deactivate"
Example: "deactivate"
keywords[].​keyword_typestringrequired
Enum"interest""target"
Example: "interest"
keywords[].​rank_idintegerrequired
Example: 1
curl -i -X PUT \
  https://developers.semify.com/_mock/openapi/api/v1/keywords \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "keywords": [
      {
        "status": "deactivate",
        "keyword_type": "interest",
        "rank_id": 1
      },
      {
        "status": "activate",
        "keyword_type": "target",
        "rank_id": 2
      }
    ]
  }'

Responses

Successful update of keywords

Bodyapplication/json
dataArray of objects
errorboolean
Example: false
paginationobject
messagesArray of strings
Example: ["Successful"]
Response
application/json
{ "data": [ { … } ], "error": false, "pagination": { "totalPages": 1, "maxRows": 0, "offset": 0, "page": 1, "totalRecords": 1 }, "messages": [ "Successful" ] }

Request

The keyword GET endpoint retrieves all keywords linked to a reseller, encompassing all campaigns that contain these keywords.

Security
JWTAuth
curl -i -X GET \
  https://developers.semify.com/_mock/openapi/api/v1/keywords \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Successful keyword retrieval

Bodyapplication/json
dataArray of objectsrequired
Example: [{"rank_google_organic":6,"campaign_id":23,"status":1,"rank_google_map":999,"account_id":7,"rank_id":22,"keyword":"dc modern furniture","type":"interest"}]
data[].​rank_google_organicinteger(int64)
Example: 2
data[].​rank_google_mapinteger(int64)
Example: 1
data[].​campaign_idinteger(int64)
Example: 7654321
data[].​account_idinteger(int64)
Example: 1234557
data[].​rank_idinteger(int64)
Example: 21
data[].​statusinteger(int64)
Enum01
Example: 1
data[].​keywordstring
Example: "Keyword"
data[].​typestring
Enum"target""interest"
Example: "target"
errorbooleanrequired
Example: false
paginationobjectrequired
Example: {"totalPages":1,"maxRows":0,"offset":0,"page":1,"totalRecords":1}
pagination.​totalPagesinteger(int64)
Example: 1
pagination.​maxRowsinteger(int64)
Example: 0
pagination.​offsetinteger(int64)
Example: 0
pagination.​pageinteger(int64)
Example: 1
pagination.​totalRecordsinteger(int64)
Example: 1
messagesArray of stringsrequired
Example: ["Successful keyword retrieval"]
Response
application/json
{ "data": [ { … } ], "error": false, "pagination": { "totalPages": 1, "maxRows": 0, "offset": 0, "page": 1, "totalRecords": 1 }, "messages": [ "Successful keyword retrieval" ] }

Request

Creates a comprehensive budget estimate for organic keywords based on SEMRush data analysis.

The API will:

  1. Retrieve organic keyword data
  2. Calculate budget estimates with trend analysis
  3. Provide recommendations and value scores
  4. Cache results for 24 hours to optimize costs

Cache Behavior:

  • Results are cached for 24 hours based on request parameters
  • Cached responses include cached: true flag
  • Fresh API calls include cached: false flag
Security
JWTAuth
Bodyapplication/jsonrequired
urlstring(uri)required

Client business domain URL to analyze

Example: "https://example.com"
categoriesArray of strings

Business categories for keyword filtering

Example: ["+|Ph|Co|seo","technology","software"]
seedsArray of strings

Seed keywords to guide the analysis

Example: ["seo tools","keyword research","digital marketing"]
marketstring

Country/locale code for market analysis

Default "us"
Example: "us"
languagestring

Language code for analysis

Default "en"
Example: "en"
max_keywordsinteger[ 1 .. 1000 ]

Maximum number of keywords to return

Default 50
Example: 50
curl -i -X POST \
  https://developers.semify.com/_mock/openapi/api/v1/keywords/budget/estimate \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com"
  }'

Responses

Budget estimate generated successfully

Bodyapplication/json
dataobject
messagestring

Response message

Example: "Budget estimate generated successfully."
error_codestring

Error code (empty for success)

Example: ""
status_codeinteger

HTTP status code

Example: 200
Response
application/json
{ "data": { "url": "https://example.com", "market": "us", "language": "en", "total_keywords": 25, "keywords": [ … ], "estimated_budget": { … }, "cached": false, "cache_timestamp": "2024-01-15T14:30:25Z" }, "message": "Budget estimate generated successfully.", "error_code": "", "status_code": 200 }

Request

This GET request allows you to retrieve a specific object by providing the rank_id as a path parameter. This unique identifier ensures that only one object is returned. If you want to retrieve all keywords associated with your reseller account, simply omit the rank_id parameter

Security
JWTAuth
Path
rank_idintegerrequired

The rank ID of the keyword

Example: 22
curl -i -X GET \
  https://developers.semify.com/_mock/openapi/api/v1/keywords/22 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Successful keyword retrieval

Bodyapplication/json
dataobjectrequired
Example: {"rank_google_organic":6,"campaign_id":23,"status":1,"rank_google_map":999,"account_id":7,"rank_id":22,"keyword":"dc modern furniture","type":"interest"}
data.​rank_google_organicinteger(int64)
Example: 6
data.​rank_google_mapinteger(int64)
Example: 999
data.​campaign_idinteger(int64)
Example: 23
data.​account_idinteger(int64)
Example: 7
data.​rank_idinteger(int64)
Example: 22
data.​statusinteger(int64)
Enum01
Example: 1
data.​keywordstring
Example: "dc modern furniture"
data.​typestring
Enum"target""interest"
Example: "interest"
errorbooleanrequired
Example: false
paginationobjectrequired
Example: {"totalPages":1,"maxRows":0,"offset":0,"page":1,"totalRecords":1}
pagination.​totalPagesinteger(int64)
Example: 1
pagination.​maxRowsinteger(int64)
Example: 0
pagination.​offsetinteger(int64)
Example: 0
pagination.​pageinteger(int64)
Example: 1
pagination.​totalRecordsinteger(int64)
Example: 1
messagesArray of stringsrequired
Example: ["Missing parameter"]
Response
application/json
{ "data": { "rank_google_organic": 6, "campaign_id": 23, "status": 1, "rank_google_map": 999, "account_id": 7, "rank_id": 22, "keyword": "dc modern furniture", "type": "interest" }, "error": false, "pagination": { "totalPages": 1, "maxRows": 0, "offset": 0, "page": 1, "totalRecords": 1 }, "messages": [ "Missing parameter" ] }
Operations

products

Product management endpoints.

Operations

authentication

Authentication/authorization endpoints.

Operations

campaigns

Campaigns and related operations.

Operations

google gbp accounts

Google GBP account endpoints.

Operations