Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.signalark.app/llms.txt

Use this file to discover all available pages before exploring further.

Use POST /v1/signals/validate to test your signal payloads before sending them to the live ingestion endpoint. The validate endpoint accepts the exact same schema as /v1/signals/ingest and runs all the same validation rules — but it does not persist any data, does not trigger the AI pipeline, and does not consume any credits or rate limits. Endpoint: POST https://www.signalark.app/_api/v1/signals/validate Authentication: Authorization: Bearer sak_your_api_key_here
Run validate against a representative sample of your payload format during development. Catching schema issues before going to production prevents silent data loss in live ingestion runs.

What validation checks

The validate endpoint runs the following checks on every signal in your batch:
  • Required fields — Verifies that company_name, signal_name, and source are present and non-empty.
  • Enum values — Checks that source is one of the accepted values (funding, job_posting, linkedin, news, review_site, tech_install, twitter, web_visit, other).
  • Field types — Validates that strings are strings, datetimes are valid ISO 8601 format, and no unexpected field types are present.
  • Domain format — Simulates account matching to verify that company_domain is formatted acceptably (no https://, no paths, no trailing slashes).
The following things do not happen during validation:
  • Signals are not written to the database.
  • The AI classification pipeline is not triggered.
  • Account matching is simulated, not executed — no records are created or modified.
  • Rate limits and ingestion credits are not consumed.

Request body

The request body is identical to /v1/signals/ingest. See Batch Ingest Market Signals for the full field reference.
signals
object[]
required
Array of signal objects to validate. Each object uses the same schema as the live ingest endpoint.

Example request

curl -X POST https://www.signalark.app/_api/v1/signals/validate \
  -H "Authorization: Bearer sak_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "signals": [
      {
        "company_name": "Acme Corp",
        "company_domain": "acmecorp.com",
        "signal_name": "Acme Corp raises $25M Series B",
        "source": "funding",
        "detected_at": "2025-04-25T10:00:00Z"
      },
      {
        "company_name": "Broken Signal",
        "signal_name": "Missing source field"
      }
    ]
  }'

Response

The response provides a per-signal breakdown showing which signals passed and which failed, along with specific error messages for each failure.
success
boolean
true when the validation request itself was processed, regardless of whether individual signals passed or failed validation.
results
object[]
An array of validation results, one per signal in your request, in the same order.

Example response

The following response corresponds to the example request above, where the first signal is valid and the second is missing the required source field:
{
  "success": true,
  "results": [
    {
      "index": 0,
      "valid": true,
      "errors": [],
      "domain_match_simulated": true
    },
    {
      "index": 1,
      "valid": false,
      "errors": [
        "Required field 'source' is missing.",
        "Field 'source' must be one of: funding, job_posting, linkedin, news, review_site, tech_install, twitter, web_visit, other."
      ],
      "domain_match_simulated": false
    }
  ]
}

Common validation errors

Error messageCauseFix
Required field 'source' is missing.The source field was omitted.Add a source value from the accepted enum list.
Invalid enum value for 'source'.The source value is not in the accepted list.Use one of: funding, job_posting, linkedin, news, review_site, tech_install, twitter, web_visit, other.
'detected_at' must be a valid ISO 8601 datetime.The date string is malformed.Format as 2025-04-25T10:00:00Z.
'company_domain' contains an invalid format.The domain includes a protocol, path, or trailing slash.Use acmecorp.com, not https://www.acmecorp.com/.
Required field 'company_name' is missing.The company_name field was omitted.Add the company name as a non-empty string.
If you receive a valid: true result for a signal but it does not appear in Signal Ark after live ingestion, it may have been deduplicated. Validation does not simulate deduplication — it only checks schema correctness.