openapi: 3.2.0 info: title: Toksta Public Evidence API description: Public API for Toksta creator data, analysis jobs, and SaaS workspace workflows. version: 0.1.0 servers: - url: https://api.toksta.com tags: - name: Evidence paths: /v1/search-results/posts: post: operationId: getSearchResultPosts summary: Get posts behind search results tags: - Evidence description: 'Return the LinkedIn posts behind search results (keyword evidence) for a creator selection. **Keywords:** provide `keywords` (array of strings) OR a `result_set_id`/`result_set_ids` (keywords are then inferred from the saved search). Sending `creator_ids` alone, with no keywords and no result set, returns `400`.' requestBody: required: true content: application/json: schema: type: object additionalProperties: true properties: creator_ids: type: array items: type: string description: UUID v4 string. description: Creator UUIDs to operate on. Takes precedence over result_set_id / result_set_ids when provided. result_set_id: type: string description: A single `result_set_id` returned by a prior discovery search. Resolved to its ranked creators. result_set_ids: type: array items: type: string description: Multiple result set IDs to merge (dedupe) into one creator selection. top_n: type: integer minimum: 1 description: When selecting from result set(s), take only the top N ranked creators. ranks: type: array items: type: integer minimum: 1 description: When a single result_set_id is provided, select specific 1-based ranks (e.g. [1,3,5]). keywords: type: array items: type: string description: Keywords to match posts against. Required unless a result_set_id/result_set_ids is provided. posts_limit_per_creator: type: integer minimum: 1 maximum: 10 description: Evidence posts per creator (1-10). Defaults to 3. detail_level: type: string enum: - summary - full description: Response verbosity. `summary` (default) returns trimmed fields; `full` returns the complete records. example: creator_ids: - f0e1d2c3-b4a5-4678-9abc-def012345678 keywords: - developer tools - API posts_limit_per_creator: 3 security: - bearerAuth: [] responses: '200': description: Keyword evidence posts per creator. content: application/json: schema: type: object description: Keyword evidence posts per creator. required: - success - data - meta properties: success: type: boolean enum: - true data: type: object additionalProperties: true description: Operation payload. See the example for the exact field structure. meta: type: object additionalProperties: true required: - request_id properties: request_id: type: string trace_id: type: string example: success: true data: keywords_used: - developer tools - API selection: source: creator_ids selected_count: 1 results: - creator: id: f0e1d2c3-b4a5-4678-9abc-def012345678 name: Jane Marketer handle: jane-marketer platform: linkedin profile_url: https://www.linkedin.com/in/jane-marketer/ cached_post_count: 42 matched_posts_count: 2 matched_keywords: - developer tools evidence_posts: - post_url: https://www.linkedin.com/posts/jane-marketer_... posted_at: '2026-05-18T08:00:00Z' keyword_matches: - developer tools relevance_score: 22 snippet: Why developer tools win on DevEx... reactions: 410 comments: 34 shares: 9 unsupported_creators: [] detail_level: summary posts_limit_per_creator: 3 meta: request_id: req_01HXYZ... trace_id: 4f1d...c2 '400': description: Bad request or validation error (`BAD_REQUEST` / `VALIDATION_ERROR`). content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: Bad request or validation error (`BAD_REQUEST` / `VALIDATION_ERROR`). '401': description: Missing, invalid, or revoked API key. content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: Missing, invalid, or revoked API key. '402': description: Insufficient credits for this operation. content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: Insufficient credits for this operation. '403': description: API access disabled or workspace entitlement required. content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: API access disabled or workspace entitlement required. '404': description: Resource not found, or result expired past retention. content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: Resource not found, or result expired past retention. '429': description: Rate limit exceeded — back off per `Retry-After`. content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: Rate limit exceeded — back off per `Retry-After`. '500': description: Unexpected server error. content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: Unexpected server error. '501': description: Endpoint is registered but not implemented yet. content: application/json: schema: type: object required: - success - error - meta properties: success: type: boolean enum: - false error: type: object required: - code - message properties: code: type: string message: type: string details: type: object additionalProperties: true meta: type: object required: - request_id properties: request_id: type: string trace_id: type: string description: Endpoint is registered but not implemented yet. components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: API key