Guest post backlink purchase process

After successful authorization, the next important step is to create a project (API method Project.addSimpleProjectAndContent). For this, you will need a domain for promotion (e.g., https://example.com/):


  curl --location 'https://app.serpzilla.com/rest/Project/addSimpleProjectAndContent' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer XXXXXXXXXXXX' \
  --header 'Cookie: AUTH_TICKET=XXXXXXXXXXXX' \
  --data '{
    "domain": "https://example.com/"
  }'

Key data from the API response:

  • id – the identifier of the created project (needed for purchasing the link)
  • urlId – the identifier of the promoted URL (main page of the promoted domain; generated automatically)
  • textId – the identifier of the text (promotion domain name; generated automatically)
  • isError – indicates if there was an error creating the project

To create a custom promotion URL, use the API method Content.addTexts. You will need the identifier of the created project:


  curl --location 'https://app.serpzilla.com/rest/Content/add/texts/projectId/123456' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer XXXXXXXXXXXX' \
  --header 'Cookie: AUTH_TICKET=XXXXXXXXXXXX' \
  --data '{
  	"urlsTexts": [
      	{
          	"url": "https://example.com/blog/",
          	"texts": [
              	{
                  	"text": "Create #a#a new#/a# example"
              	}
          	]
      	}
  	]
  }'

The response will include identifiers of the created URL and text.

Once you have the urlId, you can proceed to purchase an Advertiser’s Article (Guest Post), Publisher’s Article (Guest Post), In The News (Link Insertion), or In The Archive (Link Insertion). The link format is defined by the permanentLinkType GET parameter. It accepts the following values:

  • news = Advertiser’s Article (Guest Post)
  • review = Publisher’s Article (Guest Post)
  • link = In The News (Link Insertion)
  • archive = In The Archive (Link Insertion)

For example, set a price filter from $3 to $60 and search for sites offering In The News (Link Insertion) placements using the SearchPermanent.searchPermanent API method:


  curl --location 'https://app.serpzilla.com/rest/SearchPermanent/projectId/123456?permanentLinkType=link&projectId=123456' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer XXXXXXXXXXXX' \
  --header 'Cookie: AUTH_TICKET=XXXXXXXXXXXX' \
  --data '{
    "priceArticleFrom": 3,
    "priceArticleTo": 60
  }'

The response returns a list of sites that match the specified filter:


{
    "nofItemsTotal": 1,
    "searchHistoryId": "b8ed35d2-27b9-4193-882a-ff62ad38f4ef",
    "message": "",
    "items": [
      {
            "id": 1,
            "fullUrl": "https://example.com",
            "sqi": 100,
            "domainRating": 100,
            "mozDomainAuthority": 100,
            "advertIndexedPercent": null,
            "isCreditAvailable": true,
            "placementPercent": 95,
            "avgDaysToIndex": 7,
            "placementUniqueness": 95,
            "domainId": 2,
            "shortUrlFormatted": "example.com",
            "hasInfo": false,
            "price": 500,
            "avgPlacementTime": 2,
            "ratingCombined": 6.0,
            "trust": 1.2,
            "cleanliness": 4.7,
            "traffic": 40000,
            "trafficCheckedAt": "2026-03-11",
            "mjCf": 25,
            "mjTf": 25,
            "mozSpamScore": null,
            "ahrefsDomains": 100,
            "isPlacingNoFollow": false,
            "isProfitable": true,
            "priceArticle": 500.00,
            "priceReview": 500.00,
            "priceNews": 500.00,
            "priceArchive": 500.00,
            "whois": "2000-08-23",
            "nofPagesInYandex": 3000,
            "nofPagesInGoogle": 3000,
            "worldwideRegion": "",
            "isHttps": null,
            "semrushAscore": 3,
            "semrushDomainsNum": 2000,
            "trafficSemrush": 100,
            "trafficAhrefs": 100,
            "trafficSystem": null,
            "trafficYandex": null,
            "trafficLi": null,
            "siteDescription": "",
            "aggregatorsList": [],
            "trafficSource": 5,
            "siteLanguage": "ru",
            "worldwideCategories": [],
            "favoriteListsIds": [],
            "isNewSite": false,
            "isWorldwide": false
      }
    ]
}

Key field in the API response:

  • id — site ID

After selecting a site, you can proceed with the placement purchase. When purchasing a Publisher’s Article (Guest Post), In The News (Link Insertion), or In The Archive (Link Insertion), you must specify both the text ID and the URL ID. When purchasing an Advertiser’s Article (Guest Post), you must specify the article ID and the URL ID. API method: Placement.createPlacementsPermanent

The isContentNeedApproval parameter should be highlighted separately. It defines whether content approval is required. If enabled, the webmaster must obtain your approval before publishing the placement.


  curl --location 'https://app.serpzilla.com/rest/Placement/permanent/create/projectId/123456?linkTypeId=20' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer XXXXXXXXXXXX' \
  --header 'Cookie: AUTH_TICKET=XXXXXXXXXXXX' \
  --data-raw '{"links":[{"articleId":null,"siteId":1,"urlsTexts":[{"textId":123456,"urlId":123456}]}],"settings":{"creditPeriod":0,"isContentNeedApproval":false,"nofPendingDays":15,"warrantyPackage":2,"discountWanted":[],"isLinkTextFinal":false,"searchHistoryId":"b8ed35d2-27b9-4193-882a-ff62ad38f4ef","isConfirmedMaxUsagesExceeding":true}}'

The response will contain the IDs of the purchased links. Check the link status in the status field. In some cases, the link purchase may fail. If this happens, the response will include the isError flag, and the error message will be available in the message field.The response may also include the isDuplicate flag, which indicates that you are attempting to purchase a duplicate link. To purchase a duplicate link, set the isConfirmedDuplicate parameter in the purchase request.

To view all project links, use the API method Placement.getProjectPlacementsLinks:


  curl --location --request POST 'https://app.serpzilla.com/rest/Project/placements/links?projectId=123456' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer XXXXXXXXXXXX' \
  --header 'Cookie: AUTH_TICKET=XXXXXXXXXXXX' \
  --data ''

Link list filtering is also available. You can track the current status of each link (see the Placement.getProjectPlacementsLinks API method).

If content approval was enabled during the link purchase, after the webmaster reviews the request and submits content for approval, you need to take the required action for the link.(see the API method Placement.executePlacementsAction):


  curl --location --request PATCH 'https://app.serpzilla.com/rest/Placement/action' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer XXXXXXXXXXXX' \
  --header 'Cookie: AUTH_TICKET=XXXXXXXXXXXX' \
  --body '{
    	"action": "approve_content_seo",
    	"placementIds": [123456]
    }'

To purchase an Advertiser’s Article (Guest Post), you first need to create the article using the Content.addArticle API method.


  curl 'https://app.serpzilla.com/rest/Content/add/article/projectId/123456' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer XXXXXXXXXXXX' \
  --header 'Cookie: AUTH_TICKET=XXXXXXXXXXXX' \
  --data-raw '{"body":"<p>New article with promotion <a href=\"https://example.com\">url</a></p><p>Suggestion number one.</p><p>Suggestion number two.</p><p>Suggestion number three.</p>","metaDescription":"","metaKeywords":"new, article","metaTitle":"New article","title":"New article","url":"https://example.com"}'

Key fields in the API response:

  • articleId — article ID
  • urlId — URL ID

Then, similarly to In The News (Link Insertion), perform a search for sites that support Advertiser’s Article (Guest Post) placements. From the response, select the most relevant site and proceed with the placement purchase.