Intent

Keywords Create From Search

Bulk-create compete-tracking keywords from free-text queries.

The array/free-text sibling of create-from-domain. For EACH keyword (max 10, processed sequentially) it runs:

  1. pages/search - text/semantic search of the intent index
  2. contacts_for_urls - resolve people who visited those pages
  3. save_keyword_from_search- persist the keyword + URLs + contacts

Each keyword is isolated: a failure on one yields status="error" for that item and never fails the whole batch. Empty / whitespace-only entries and in-request duplicates (case-insensitive, trimmed) are status="skipped" before any search/resolve work.

NOTE - not idempotent across requests: re-posting the same keyword text in a LATER request replaces the prior saved row and returns a NEW keyword_id (the underlying save is replace-on-save for an exact keyword+filters match).

post/intent/keywords/create-from-search

Request

  • Base URL: https://be.graph8.com/api/v1
  • URL: https://be.graph8.com/api/v1/intent/keywords/create-from-search
  • Auth: HTTP bearer

Headers

Authorizationstring nullable
X-Target-Org-Idstring nullable

Request body

keywordsstring[] required

1-10 free-text keyword queries. Each is searched against the intent page index, contacts/companies are resolved, and a compete-tracking keyword row is saved. Duplicates within the request (case-insensitive, trimmed) are skipped, not re-saved.

search_filtersobject nullable

Optional intent-search filters applied to EVERY keyword in the batch (audience, page_type, commercial_score_min, etc.). Stored verbatim on each saved keyword row so the daily resolver replays them.

semantic_rationumber

0 = text search (default, cheapest), 1 = semantic, between = hybrid.

page_limitinteger

Max pages to seed per keyword. Deliberately smaller than create-from-domain's 200 default since this runs once per keyword.

contact_limitinteger

Max contacts to pre-resolve per keyword.

Response

Successful Response

Changes

No recorded changes to this operation across all 2 revisions of this API.