generated: '2026-08-09' method: searched source: https://mydentify.com/submit.md derived_from: - openapi/mydentify-public-api-openapi-original.json - https://mydentify.com/developers - https://mydentify.com/.well-known/agent-skills/submit-to-mydentify/SKILL.md authentication: style: none detail: >- Public read routes and the submission workflow are keyless — no token, login, or paid plan. The OpenAPI declares an empty top-level `security: []` and no `components.securitySchemes`. docs: https://mydentify.com/developers see: authentication/mydentify-public-api-authentication.yml idempotency: supported: true header: Idempotency-Key applies_to: - POST /api/imports required: false key_constraints: {type: string, min_length: 8, max_length: 200} semantics: >- Reusing the same idempotency key with the same body returns the original import (HTTP 200 "Existing idempotent import" instead of 202). Reusing the same key with a different body returns HTTP 409. retention: not published source: https://mydentify.com/submit.md spec_evidence: openapi/mydentify-public-api-openapi-original.json — Idempotency-Key header parameter on POST /api/imports pagination: style: none-in-api detail: >- The JSON API returns whole catalogs (`/directories.json` carries `totalRecords` and the full `records` array; `/leaderboards.json` and `/product-categories.json` are likewise complete documents). Paging exists only on the HTML directory browse surface via `page`, alongside `q`, `category`, `pricing`, `link` and `sort` query parameters. html_params: [q, category, pricing, link, sort, page] source: https://mydentify.com/.well-known/agent-skills/research-product-directories/SKILL.md streaming: protocol: sse endpoint: GET /api/imports/{id}/events content_type: text/event-stream resume: Last-Event-ID request header (integer) alternative: poll the `statusUrl` returned on the import note: >- This is a server-sent-event stream on a single import, not a webhook or pub/sub surface. Mydentify publishes no webhooks and no AsyncAPI. state_machine: field: state values: [queued, running, needs_input, retry_scheduled, duplicate_detected, ready_for_confirmation, submitted_for_review, approved, rejected, failed, canceled] driver: >- Responses carry a `nextAction` object ({type, method, href}); clients are told to follow it rather than infer the next call. source: https://mydentify.com/submit.md error_envelope: shape: '{"error": {"code": string, "message": string, "retryable": boolean, "retryAfter": date-time}}' format: custom-json rfc9457: false retry_contract: honour `retryAfter` when `retryable` is true see: errors/mydentify-public-api-problem-types.yml versioning: scheme: document-version current: 1.4.0 detail: >- No version segment in the URI and no version header. The OpenAPI `info.version` is the only published version marker; it read 1.3.1 in the provider's apis.json and 1.4.0 in the live OpenAPI on 2026-08-09. see: lifecycle/mydentify-public-api-lifecycle.yml rate_limiting: documented: false response_headers: none observed detail: >- No rate-limit policy or `RateLimit-*`/`X-RateLimit-*` headers are published. The only throttling signal in the contract is HTTP 429 on POST /api/imports/{id}/retry, and the `retryAfter` field on the error envelope. cors: enabled: true allow_origins: ['*'] scope: directory JSON endpoints source: openapi/mydentify-public-api-openapi-original.json — x-cors extension caching: observed: 'cache-control: public, s-maxage=300, stale-while-revalidate=3600 on catalog JSON' request_tracing: documented: false observed_headers: [x-railway-request-id, cf-ray] note: infrastructure headers observed on responses; not a documented client contract content_negotiation: json: '.json suffixed paths and /api/* routes' markdown: >- Most resources have a paired Markdown representation — append /llms.txt to a directory, tool, intent or playbook URL; /api/products/{slug}/markdown and /api/content/{slug}/markdown for products and articles. agent_policy: ai_txt: https://mydentify.com/ai.txt read_only_actions: no confirmation required external_actions: >- Submission, intent confirmation, account changes, payment and sponsorship require explicit user approval per ai.txt [agent-actions]. content_signals: 'robots.txt: search=yes, ai-train=no, use=reference' see: agentic-access/mydentify-public-api-agentic-access.yml