Skip to content

Submit a contact request

POST
/v1/contact
curl --request POST \
--url https://oddslink.app/v1/contact \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "email": "hello@example.com", "topic": "general", "message": "example", "consent": true, "website": "example" }'

Accepts a website contact form. This operation has no API-key or session requirement, and delivers the message to the support inbox. There is no API operation to retrieve messages.

Media typeapplication/json
object
name
required
string
>= 1 characters <= 120 characters
email
required
string format: email
<= 254 characters
topic
required
One of:
string
Allowed value: general
message
required
string
>= 1 characters <= 5000 characters
consent
required
boolean
website
required

Leave blank. This field exists to detect automated submissions.

string
<= 200 characters

The contact request was accepted.

Media typeapplication/json
object
status
required
string
Allowed value: accepted
Example
{
"status": "accepted"
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.

A parameter was malformed.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
docs_url
required
string format: uri
request_id
required
string
stored_commence_times

Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.

Array<integer>
valid_bookmakers

Valid case-sensitive book keys on INVALID_BOOKMAKER.

Array<string>
current_plan

403 only: the plan on the presented key.

string
required_plan

403 only: the lowest plan that includes this request. For history, that depends on how long ago the fixture started as well as on the endpoint.

string
Example
{
"error": {
"code": "BAD_REQUEST",
"message": "commenceTimeFrom is not a valid ISO-8601 timestamp.",
"docs_url": "https://oddslink.app/docs/errors/#bad-request",
"request_id": "req_01hz8k3z9e2v6w1x"
}
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.

Too many contact submissions from this address.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
docs_url
required
string format: uri
request_id
required
string
stored_commence_times

Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.

Array<integer>
valid_bookmakers

Valid case-sensitive book keys on INVALID_BOOKMAKER.

Array<string>
current_plan

403 only: the plan on the presented key.

string
required_plan

403 only: the lowest plan that includes this request. For history, that depends on how long ago the fixture started as well as on the endpoint.

string
Example
{
"error": {
"code": "CONTACT_RATE_LIMITED",
"message": "too many contact submissions; try again later",
"docs_url": "https://oddslink.app/docs/errors/#contact-rate-limited",
"request_id": "req_01J8Z5Q2K9V3N7M4"
}
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.

Retry-After
integer

Seconds to wait before retrying on 429 SPEED_LIMIT or 503 ODDS_UNAVAILABLE.

Contact email delivery or abuse protection is temporarily unavailable.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
docs_url
required
string format: uri
request_id
required
string
stored_commence_times

Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.

Array<integer>
valid_bookmakers

Valid case-sensitive book keys on INVALID_BOOKMAKER.

Array<string>
current_plan

403 only: the plan on the presented key.

string
required_plan

403 only: the lowest plan that includes this request. For history, that depends on how long ago the fixture started as well as on the endpoint.

string
Example
{
"error": {
"code": "CONTACT_UNAVAILABLE",
"message": "contact submissions are temporarily unavailable; try again",
"docs_url": "https://oddslink.app/docs/errors/#contact-unavailable",
"request_id": "req_01J8Z5Q2K9V3N7M4"
}
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.