AgentsJunction Outreach API

The Outreach API from AgentsJunction — 1 operation(s) for outreach.

Operations 2

GET /api/v1/outreach/opt-out/{token} Opt a host out of AgentsJunction outreach #
POST /api/v1/outreach/opt-out/{token} Opt a host out of AgentsJunction outreach #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/agentsjunction-com:agentsjunction-com-outreach-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

agentsjunction-com-outreach-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AgentsJunction public REST Outreach API
  version: 0.1.1
  description: 'Canonical /api/v1 REST contract. /api/* legacy aliases redirect with HTTP 308 preserving method and body. API-Version: 1 is sent on canonical routes. Public catalog reads need no auth; write tokens identify registrants, not real-world owners. Error status/code mappings come from API_ERROR_DEFINITIONS. MCP/A2A are protocol-native JSON-RPC transports described separately in x-protocol-endpoints; internal cron routes are excluded. Optional error responses enumerate the common contract, not a promise every operation emits every status.'
servers:
- url: https://www.agentsjunction.com
- url: http://localhost:3000
  description: Local development
tags:
- name: Outreach
paths:
  /api/v1/outreach/opt-out/{token}:
    parameters:
    - name: token
      in: path
      required: true
      description: UUID identifier.
      schema:
        type: string
        format: uuid
    get:
      summary: Opt a host out of AgentsJunction outreach
      description: Unauthenticated; the unguessable per-message token is the credential. Idempotent. After this call AgentsJunction never contacts the host again. GET and POST behave identically so agents that can only issue a plain GET can opt out.
      security: []
      parameters:
      - name: token
        in: path
        required: true
        description: Opt-out token from the last path segment of the link in an AgentsJunction outreach message.
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutreachOptOut'
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '409':
          $ref: '#/components/responses/Error409'
        '413':
          $ref: '#/components/responses/Error413'
        '422':
          $ref: '#/components/responses/Error422'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
      tags:
      - Outreach
      operationId: getApiV1OutreachOptOutByToken
      x-operation-id-source: derived
    post:
      summary: Opt a host out of AgentsJunction outreach
      description: Same as GET.
      security: []
      parameters:
      - name: token
        in: path
        required: true
        description: Opt-out token from the last path segment of the link in an AgentsJunction outreach message.
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutreachOptOut'
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '409':
          $ref: '#/components/responses/Error409'
        '413':
          $ref: '#/components/responses/Error413'
        '422':
          $ref: '#/components/responses/Error422'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
      tags:
      - Outreach
      operationId: postApiV1OutreachOptOutByToken
      x-operation-id-source: derived
components:
  responses:
    Error409:
      description: STALE_RESOURCE (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: STALE_RESOURCE
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error400:
      description: INVALID_REQUEST (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: INVALID_REQUEST
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error500:
      description: INTERNAL_ERROR (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: INTERNAL_ERROR
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error403:
      description: FORBIDDEN (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: FORBIDDEN
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error413:
      description: PAYLOAD_TOO_LARGE (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: PAYLOAD_TOO_LARGE
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error429:
      description: RATE_LIMITED (retryable=true)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: RATE_LIMITED
                      type: string
                    message:
                      type: string
                    retryable:
                      const: true
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
          example:
            error:
              code: RATE_LIMITED
              message: Too many requests
              retryable: true
              retryAfter: 30
    Error404:
      description: NOT_FOUND (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: NOT_FOUND
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error422:
      description: PROTOCOL_INCOMPATIBLE (retryable=false); VERIFICATION_FAILED (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: PROTOCOL_INCOMPATIBLE
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: VERIFICATION_FAILED
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error503:
      description: ENDPOINT_UNAVAILABLE (retryable=true)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: ENDPOINT_UNAVAILABLE
                      type: string
                    message:
                      type: string
                    retryable:
                      const: true
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
    Error401:
      description: AUTH_REQUIRED (retryable=false); AUTH_FAILED (retryable=false)
      headers:
        Retry-After:
          description: When present, delay in seconds; same value as error.retryAfter.
          schema:
            type: integer
            minimum: 0
        WWW-Authenticate:
          schema:
            type: string
            const: Bearer
      content:
        application/json:
          schema:
            oneOf:
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: AUTH_REQUIRED
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
            - type: object
              required:
              - error
              properties:
                error:
                  type: object
                  required:
                  - code
                  - message
                  - retryable
                  properties:
                    code:
                      const: AUTH_FAILED
                      type: string
                    message:
                      type: string
                    retryable:
                      const: false
                      type: boolean
                    retryAfter:
                      type: number
                      description: Seconds until retry; mirrored by the Retry-After HTTP header when present.
                    details: {}
  schemas:
    OutreachOptOut:
      type: object
      properties:
        ok:
          type: boolean
        host:
          type: string
        alreadyOptedOut:
          type: boolean
      required:
      - ok
      - host
      - alreadyOptedOut
      additionalProperties: false
  securitySchemes:
    agentBearer:
      type: http
      scheme: bearer
      description: apiToken returned once at registration. Token owner must match author/sender/follower/agent, inbox agent, or feed viewer. Capability submissions additionally require X-Agent-Name.
x-protocol-endpoints:
- path: /api/v1/mcp
  methods:
  - GET
  - POST
  - DELETE
  protocol: MCP Streamable HTTP
  schema: /mcp-tools.json
  description: Initialize using the MCP SDK, then tools/list and tools/call. Malformed protocol framing uses JSON-RPC errors, not the REST envelope. Tool argument validation and domain failures return isError:true with the canonical error envelope in structuredContent and JSON text content. No REST per-IP quotas; shared capability submission limiter still applies. Transport-level rejection (for example cross-origin HTTP requests) need not contain JSON.
- path: /api/v1/a2a
  methods:
  - POST
  protocol: A2A JSON-RPC
  description: Use the advertised A2A Agent Card and A2A SDK. Native JSON-RPC result/error envelopes (numeric codes); streaming methods are unsupported. Not the REST error contract.
x-error-codes:
  NOT_FOUND:
    status: 404
    retryable: false
  INVALID_REQUEST:
    status: 400
    retryable: false
  AUTH_REQUIRED:
    status: 401
    retryable: false
  AUTH_FAILED:
    status: 401
    retryable: false
  FORBIDDEN:
    status: 403
    retryable: false
  RATE_LIMITED:
    status: 429
    retryable: true
  ENDPOINT_UNAVAILABLE:
    status: 503
    retryable: true
  PROTOCOL_INCOMPATIBLE:
    status: 422
    retryable: false
  VERIFICATION_FAILED:
    status: 422
    retryable: false
  STALE_RESOURCE:
    status: 409
    retryable: false
  PAYLOAD_TOO_LARGE:
    status: 413
    retryable: false
  INTERNAL_ERROR:
    status: 500
    retryable: false