API Docs
REST API Endpoints
4 min
we support a number of both server side and client side implementation patterns, including no code solutions we also support both rest and websocket (json rpc) style integrations if you aren't sure where to start, feel free to contact us and we'll discuss what works best for your use case accounts { "name" "create or update account", "method" "post", "url" "https //\<customer> control kickplan dev/api/accounts", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "wzez2 gq1axkt4r7ez4hg", "language" "curl", "code" "curl location 'https //\<customer> control kickplan dev/api/accounts' \\\\\n header 'accept application/json' \\\\\n header 'content type application/json' \\\\\n data '{\\"key\\" \\"acme\\",\\"name\\" \\"acme\\",\\"custom fields\\" {\\"salesforce id\\" \\"12345\\"},\\"account plans\\" \[{\\"plan key\\" \\"essentials\\"}],\\"feature overrides\\" \[{\\"feature key\\" \\"metrics\\",\\"variant key\\" \\"true\\"},{\\"feature key\\" \\"chat\\",\\"variant key\\" \\"off\\"}]}'", "customlabel" "" }, { "id" "6dlenlfdr9lazcqysxqcj", "language" "ruby", "code" "# sample for a rails app\nkickplan accounts create(\n key \\"acme\\",\n name \\"acme\\",\n account plans \[{ plan key \\"essentials\\" }],\n custom fields { \\"salesforce id\\" \\"12345\\"},\n feature overrides \[{\n feature key \\"metrics\\", \n variant key \\"true\\"\n },\n {\n feature key \\"chat\\", \n variant key \\"off\\"\n }]\n)\n \nkickplan accounts update(\\"acme\\", {\n name \\"acme, inc \\",\n account plans \[{ plan key \\"professional\\" }],\n custom fields { \\"salesforce id\\" \\"12345\\"},\n feature overrides \[{\n feature key \\"metrics\\", \n variant key \\"false\\"\n },\n {\n feature key \\"chat\\", \n variant key \\"on\\"\n }]\n)", "customlabel" "" } ], "selectedlanguageid" "wzez2 gq1axkt4r7ez4hg" }, "results" { "languages" \[ { "id" "pr0ksmipt ghu 0iru8dx", "language" "200", "customlabel" "", "code" "{\n \\"feature overrides\\" \[\\"metrics/true\\", \\"chat/off\\"],\n \\"inserted at\\" \\"2024 02 22t20 07 44 706979z\\", \n \\"key\\" \\"acme\\",\n \\"name\\" \\"acme inc \\",\n \\"plans\\" \[\\"essentials\\"],\n \\"updated at\\" \\"2024 02 22t20 07 44 706979z\\"\n}" }, { "id" "xea5racn62hut39sr0q5e", "language" "400", "code" "# example response\n{\n \\"message\\" \\"invalid input\\",\n \\"type\\" \\"invalid input\\",\n \\"errors\\" \[\n {\n \\"field\\" \\"key\\",\n \\"message\\" \\"is required\\",\n \\"type\\" \\"invalid\\"\n }\n ]\n}", "customlabel" "" } ], "selectedlanguageid" "pr0ksmipt ghu 0iru8dx" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "key", "kind" "required", "type" "string", "description" "id of the account" }, { "name" "name", "kind" "optional", "type" "string", "description" "name of the account", "children" \[] }, { "name" "custom fields", "kind" "optional", "type" "object", "description" "custom fields to set for the account each custom field is a key value pair ", "children" \[ { "name" "custom field key", "kind" "optional", "type" "string", "description" "custom field key (defined in kickplan console settings)" } ] }, { "name" "account plans", "kind" "optional", "type" "array", "description" "array of plans the account is subscribed to each array element is an object { plan key \\"value\\" } ", "children" \[] }, { "name" "feature overrides", "kind" "optional", "type" "array", "description" "array of feature overrides to set for the account each array element is an object { feature key \\"value\\", variant key \\"value\\" } ", "children" \[] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } features { "name" "resolve single feature", "method" "post", "url" "https //\<customer> console kickplan dev/api/features/\<feature key>/resolve", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "wzez2 gq1axkt4r7ez4hg", "language" "curl", "code" "curl location 'https //customer control kickplan dev/api/features/upload contacts/resolve' \\\\\n header 'accept application/json' \\\\\n header 'content type application/json' \\\\\n data '{\\"detailed\\" \\"true\\",\\"context\\" {\\"account key\\" \\"12345\\"}}'", "customlabel" "" }, { "id" "6dlenlfdr9lazcqysxqcj", "language" "ruby", "code" "# sample for a rails app, see ruby sdk for more\n\n# resolve globally\nkickplan features resolve(\\"upload contacts\\")\n\n# resolve for an account\nkickplan features resolve(\\"upload contacts\\", { context { account key \\"acme\\"}})\n\n# resolve with detailed response\nkickplan features resolve(\\"upload contacts\\", detailed true)\n", "customlabel" "" } ], "selectedlanguageid" "6dlenlfdr9lazcqysxqcj" }, "results" { "languages" \[ { "id" "pr0ksmipt ghu 0iru8dx", "language" "200", "customlabel" "", "code" "{\n \\"value\\" true,\n \\"metadata\\" {\n \\"name\\" \\"upload contacts\\"\n },\n \\"key\\" \\"upload contacts\\",\n \\"error code\\" null,\n \\"variant\\" \\"true\\"\n}\n\n# response when no account found\n{\n \\"value\\" false,\n \\"metadata\\" {\n \\"name\\" \\"upload contacts\\"\n },\n \\"key\\" \\"upload contacts\\",\n \\"error code\\" null,\n \\"variant\\" \\"false\\"\n}" } ], "selectedlanguageid" "pr0ksmipt ghu 0iru8dx" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "detailed", "kind" "optional", "type" "boolean", "description" "whether to retrieve all details associated with the feature, or just the value " }, { "name" "context", "kind" "required", "type" "object", "description" "name of the account", "children" \[ { "name" "account key", "kind" "required", "type" "string", "description" "account key" } ] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } { "name" "resolve all features", "method" "post", "url" "https //\<customer> console kickplan dev/api/features/resolve", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "wzez2 gq1axkt4r7ez4hg", "language" "curl", "code" "curl location 'https //customer control kickplan dev/api/features/resolve' \\\\\n header 'accept application/json' \\\\\n header 'content type application/json' \\\\\n data '{\\"detailed\\" \\"true\\",\\"context\\" {\\"account key\\" \\"12345\\"}}'", "customlabel" "" }, { "id" "6dlenlfdr9lazcqysxqcj", "language" "ruby", "code" "# sample for a rails app, see ruby sdk for more\n\n# resolve all features globally\nkickplan features resolve()\n\n# resolve all features for an account\nkickplan features resolve({ context { account key \\"acme\\"}})\n\n# resolve with detailed response\nkickplan features resolve(detailed true)\n", "customlabel" "" } ], "selectedlanguageid" "6dlenlfdr9lazcqysxqcj" }, "results" { "languages" \[ { "id" "pr0ksmipt ghu 0iru8dx", "language" "200", "customlabel" "", "code" "\[\n {\n \\"value\\" true,\n \\"key\\" \\"upload contacts\\",\n },\n {\n \\"value\\" false,\n \\"key\\" \\"chat\\",\n }\n]" } ], "selectedlanguageid" "pr0ksmipt ghu 0iru8dx" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "detailed", "kind" "optional", "type" "boolean", "description" "whether to retrieve all details associated with the feature, or just the value " }, { "name" "context", "kind" "required", "type" "object", "description" "name of the account", "children" \[ { "name" "account key", "kind" "required", "type" "string", "description" "account key" } ] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } metrics { "name" "set a metric", "method" "post", "url" "https //\<customer> console kickplan dev/api/metrics/set", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "wzez2 gq1axkt4r7ez4hg", "language" "curl", "code" "curl location 'https //customer control kickplan dev/api/metrics/set' \\\\\n header 'accept application/json' \\\\\n header 'content type application/json' \\\\\n data '{\\"key\\" \\"true\\",\\"value\\" 1,\\"account key\\" \\"12345\\",\\"idempotency key\\" \\"test key\\",\\"time\\" \\"2024 04 29t12 20 34 07 00\\"}'", "customlabel" "" }, { "id" "6dlenlfdr9lazcqysxqcj", "language" "ruby", "code" "# sample for a rails app, see ruby sdk for more\n\n# set metric for an account\nkickplan metrics set(\n key \\"seats\\", \n value \\"5\\", \n account key \\"acme\\", \n idempotency key \\"some key\\",\n time \\"2024 04 29t12 20 34 07 00\\"\n)", "customlabel" "" } ], "selectedlanguageid" "6dlenlfdr9lazcqysxqcj" }, "results" { "languages" \[ { "id" "pr0ksmipt ghu 0iru8dx", "language" "202", "customlabel" "", "code" "" } ], "selectedlanguageid" "pr0ksmipt ghu 0iru8dx" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "key", "kind" "required", "type" "string", "description" "metric key" }, { "name" "value", "kind" "required", "type" "integer", "description" "metric value", "children" \[ { "name" "account key", "kind" "required", "type" "string", "description" "account key" } ] }, { "name" "account key", "kind" "required", "type" "string", "description" "account key", "children" \[] }, { "name" "idempotency key", "kind" "optional", "type" "string", "description" "", "children" \[] }, { "name" "time", "kind" "optional", "type" "string", "description" "datetime in iso 8601 format ", "children" \[] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } }