Skip to content

Create a program

POST/v1/organization/{orgId}/awards/programs/create

US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com

Creates the program with its submission form, a default round, and the token owner as program manager — the same as creating it in the admin app. Counts against the plan's Awards program limit. Requires the write:awards scope.

Request example

Terminal window
curl --request POST \
--url 'https://public-api.sessionboard.com/v1/organization/{orgId}/awards/programs/create' \
--header 'x-access-token: <api-token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<string>",
"nomenclature": "awards",
"description": "<string>",
"slug": "<string>",
"status": "draft",
"year": 123,
"deadline": "2026-01-15T09:30:00Z",
"collects_fees": true,
"submitter_editing_policy": "never",
"notify_on_submitter_edit": true,
"default_submission_status": "submitted"
}'

Try it

Authorization

Your token stays in this page. It is sent only to the region above and is never saved; it is gone when you leave or reload the page.

Path parameters
Body application/json
POST

Authorizations

  • x-access-tokenstringheader

    Organization API token. Generate from Organization Settings → API Tokens.

  • AuthorizationBearer <token>headeror

    OAuth 2.1 access token. Obtained via the OAuth PKCE flow at /oauth/token.

Send one of these. See Authentication.

Path parameters

  • orgIdstringpathrequired

    Your organization ID. Any other organization returns 404.

Request body

application/jsonrequired

  • namestringrequired
    Min length
    1
    Max length
    255
  • nomenclaturestring
    Allowed values
    "awards", "grants", "scholarships"
  • descriptionstring | null
  • slugstring

    Defaults to one derived from name on create.

    Min length
    1
    Max length
    255
  • statusstring

    Update only.

    Allowed values
    "draft", "open", "reviewing", "closed", "archived"
  • yearinteger | null
  • deadlinestring<date-time> | null
  • collects_feesboolean

    Update only.

  • submitter_editing_policystring
    Allowed values
    "never", "while_open", "while_open_after_payment"
  • notify_on_submitter_editboolean
  • default_submission_statusstring | null

    Status a new submission starts in. Empty string or null clears it.

    Allowed values
    "submitted", "under_review", "accepted", "rejected", "", null
{
"name": "<string>",
"nomenclature": "awards",
"description": "<string>",
"slug": "<string>",
"status": "draft",
"year": 123,
"deadline": "2026-01-15T09:30:00Z",
"collects_fees": true,
"submitter_editing_policy": "never",
"notify_on_submitter_edit": true,
"default_submission_status": "submitted"
}

Responses

201application/json

Program created

  • dataAwardsProgram
    Show child attributes
    • idstring<uuid>
    • org_idstring
    • namestring
    • slugstring
    • nomenclaturestring
      Allowed values
      "awards", "grants", "scholarships"
    • descriptionstring | null
    • statusstring
      Allowed values
      "draft", "open", "reviewing", "closed", "archived"
    • yearinteger | null
    • deadlinestring<date-time> | null
    • collects_feesboolean
    • pricing_typestring | null
    • base_feenumber | null
    • submitter_editing_policystring
      Allowed values
      "never", "while_open", "while_open_after_payment"
    • notify_on_submitter_editboolean
    • created_atstring<date-time>
    • updated_atstring<date-time>

400application/json

Invalid body or id

  • errorstring
    Allowed values
    "VALIDATION_ERROR", "SCOPE_REQUIRED", "FORBIDDEN", "NOT_FOUND", "CONFLICT"
  • messagestring

401

Missing or invalid token

403application/json

Your plan allows 3 Awards programs (403 also means the token lacks write:awards)

  • errorstring
    Allowed values
    "VALIDATION_ERROR", "SCOPE_REQUIRED", "FORBIDDEN", "NOT_FOUND", "CONFLICT"
  • messagestring

404application/json

Not found — also returned for any id belonging to another organization

  • errorstring
    Allowed values
    "VALIDATION_ERROR", "SCOPE_REQUIRED", "FORBIDDEN", "NOT_FOUND", "CONFLICT"
  • messagestring

Response examples

{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"org_id": "<string>",
"name": "2027 Excellence Awards",
"slug": "2027-excellence-awards",
"nomenclature": "awards",
"description": "<string>",
"status": "draft",
"year": 123,
"deadline": "2026-01-15T09:30:00Z",
"collects_fees": true,
"pricing_type": "<string>",
"base_fee": 123.45,
"submitter_editing_policy": "never",
"notify_on_submitter_edit": true,
"created_at": "2026-01-15T09:30:00Z",
"updated_at": "2026-01-15T09:30:00Z"
}
}

Get release notes by email

A short digest on the days something new goes live — each change with a link to its note in the release notes. No marketing, and one click to stop.

Company email addresses only. We’ll send one email to confirm it’s you. Already use Sessionboard? You can also turn this on under Community → What’s new.