Get a free key
Register specials targets

Register specials targets

Idempotent, up to 200 sites per call. Each site is matched by exact normalized host; an unknown host becomes a new site. Creates the (site, kind) collection target if it does not exist and never changes an existing one. New targets start in shadow (collected and diffed, not published) until the site passes parity and is promoted. Records the agency's entitlement, so the credential can read the site's specials, history and runs. seed_urls (known specials pages, on the site's host) and group_hosts (sister-store hosts whose images count as dealer-owned) are merged with earlier registrations. Kinds media, site_pages and ad_library are planned (400 kind_not_available). Needs scope v2:write. Returns 201 when anything was created.

POSThttps://api.motorsdynamic.com/api/v2/targets

Plan and price

PlanAccessPrice
FreeNonot included
GrowthNonot included
ScaleNonot included
EnterpriseYescontract

A call is billed when it answers 2xx. See pricing.

Request body

FieldTypeDescription
agency_idintegerRequired only when the credential can act for more than one agency.
domains[]array of object
domains[].urlstring
domains[].namestring
domains[].kinds[]array of specials
domains[].seed_urls[]array of string
domains[].group_hosts[]array of string
domains[].cms_hintstring

Example request

curl -X POST "https://api.motorsdynamic.com/api/v2/targets" \
  -H "x-api-key: $MD_API_KEY" \
  -H "content-type: application/json" \
  -d '{"domains":[{"url":"https://www.newkiastore.com/","seed_urls":["https://www.newkiastore.com/new-specials/"],"group_hosts":["sisterkia.com"]}]}'

Example response

{
  "data": [
    {
      "domain_id": 1000000123,
      "host": "newkiastore.com",
      "created": {
        "site": true,
        "targets": [
          "specials"
        ],
        "entitlement": true
      },
      "targets": [
        {
          "kind": "specials",
          "mode": "shadow",
          "next_crawl_at": "2026-09-24T10:00:00.000000Z",
          "last_complete_at": null
        }
      ]
    }
  ],
  "meta": {
    "agency_id": 2
  }
}

Response fields

FieldTypeDescription
data[]array of object
data[].domain_idinteger
data[].hoststring
data[].createdobject
data[].created.siteboolean
data[].created.targets[]array of string
data[].created.entitlementboolean
data[].targets[]array of object
data[].targets[].kindstring
data[].targets[].modeshadow or publish
data[].targets[].next_crawl_atstring or nullRFC 3339 UTC with microseconds.
data[].targets[].last_complete_atstring or nullRFC 3339 UTC with microseconds.
metaobject

Errors

StatusCodeWhen
400invalid_parameterA parameter is missing or malformed. The message names it.
401invalid_api_keyThe key is missing, revoked or mistyped.
402plan_requiredThe endpoint is on a higher plan. The body names the plan and links to the upgrade.
403not_entitledThe key may not read this dealer or source.
429rate_limited or quota_exceededSlow down (see Retry-After), or the Free monthly calls are used up.
504query_timeoutThe query passed its 4 second budget. Narrow the filters. Not billed.

Every error has the same body. Full list: errors.